diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..77fe17f7a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,20 @@ +# EditorConfig.org + +root = true + +[*] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 +indent_style = space +indent_size = 4 + +[*.yml] +indent_size = 2 + +[tests/data/**] +insert_final_newline = false + +[tools/contexts/*.txt] +insert_final_newline = false diff --git a/.gitattributes b/.gitattributes index 027e874fb..71c67f909 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,20 @@ +*.in linguist-language=sql +*.out linguist-language=json + /tools export-ignore +/tests/benchmarks export-ignore .gitattributes export-ignore .gitignore export-ignore -.travis.yml export-ignore -codeconv.yml export-ignore -.php_cs export-ignore +.editorconfig export-ignore +.github export-ignore +.weblate export-ignore +.scrutinizer.yml export-ignore +infection.json.dist export-ignore +phpbench.json export-ignore +phpcs.xml.dist export-ignore +phpstan.neon.dist export-ignore +phpstan-baseline.neon export-ignore +psalm.xml export-ignore +psalm-baseline.xml export-ignore +CODE_OF_CONDUCT.md export-ignore +CONTRIBUTING.md export-ignore diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..d61afde9b --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: https://www.phpmyadmin.net/donate/ diff --git a/.github/workflows/lint-and-analyse-php.yml b/.github/workflows/lint-and-analyse-php.yml new file mode 100644 index 000000000..786a31eb2 --- /dev/null +++ b/.github/workflows/lint-and-analyse-php.yml @@ -0,0 +1,62 @@ +name: Lint and analyse php files + +on: + push: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + lint-php: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use PHP 8.2 + uses: shivammathur/setup-php@v2 + with: + php-version: 8.2 + - name: Validate composer.json and composer.lock + run: composer validate + - name: Cache module + uses: actions/cache@v3 + with: + path: ~/.composer/cache/ + key: composer-cache + - name: Install dependencies + run: composer install + - name: Lint files + run: composer run phpcs + + analyse-php: + runs-on: ubuntu-latest + strategy: + matrix: + php-version: ["8.2"] + steps: + - uses: actions/checkout@v3 + - name: Use PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + tools: composer:v2 + + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + run: composer install + - name: Analyse files with PHPStan + run: composer run phpstan + - name: Analyse files with Psalm + # Allow the previous check to fail but not abort + if: always() + run: composer run psalm -- --shepherd diff --git a/.github/workflows/lint-docs.yml b/.github/workflows/lint-docs.yml new file mode 100644 index 000000000..66201cfd1 --- /dev/null +++ b/.github/workflows/lint-docs.yml @@ -0,0 +1,18 @@ +name: lint php documentation + +on: + push: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + lint-docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: lint php documentation + uses: sudo-bot/action-doctum@v5 + with: + config-file: tools/doctum-config.php + method: "parse" + cli-args: "--output-format=github --no-ansi --no-progress -v --ignore-parse-errors" diff --git a/.github/workflows/mutation-tests.yml b/.github/workflows/mutation-tests.yml new file mode 100644 index 000000000..a2e734422 --- /dev/null +++ b/.github/workflows/mutation-tests.yml @@ -0,0 +1,76 @@ +name: Mutation tests + +on: + push: + branches: + - master + - 6.0.x + pull_request: + branches: + - master + - 6.0.x + +jobs: + tests: + name: Mutation tests with PHP ${{ matrix.php-version }} + + runs-on: ${{ matrix.operating-system }} + + strategy: + matrix: + php-version: ["8.2"] + operating-system: [ubuntu-latest] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Fetch github.base_ref (for diffing) + if: ${{ github.base_ref != '' }} + run: | + git fetch --depth=1 origin +refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }} + + - name: Install PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + coverage: pcov + ini-values: memory_limit=-1 + tools: composer:v2, infection:0.27.11 + + - name: Get Composer cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + run: | + composer update --no-interaction --no-progress + + - name: Collect coverage report + run: composer run phpunit -- --stop-on-failure + + - name: Infection + if: ${{ github.base_ref != '' }} + run: | + CHANGED_FILES=$(git diff origin/$GITHUB_BASE_REF --diff-filter=AM --name-only | grep src/ | paste -sd "," -); + infection -j$(nproc) --skip-initial-tests --no-interaction --no-progress --coverage=build/logs \ + --ignore-msi-with-no-mutations \ + --filter=$CHANGED_FILES + env: + INFECTION_BADGE_API_KEY: ${{ secrets.INFECTION_BADGE_API_KEY }} + + - name: Infection + if: ${{ github.base_ref == '' }} + run: | + infection -j$(nproc) --skip-initial-tests --no-interaction --no-progress --coverage=build/logs + env: + INFECTION_BADGE_API_KEY: ${{ secrets.INFECTION_BADGE_API_KEY }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..47f23729f --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,103 @@ +name: Run tests + +on: + push: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + test-php: + name: Test on PHP ${{ matrix.php-version }} and ${{ matrix.os }} + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} + strategy: + matrix: + php-version: ["8.2", "8.3"] + os: [ubuntu-latest] + experimental: [false] + composer-options: [''] + include: + - { php-version: 'nightly', experimental: true, os: ubuntu-latest, composer-options: '--ignore-platform-reqs' } + steps: + - uses: actions/checkout@v3 + with: + # Fetch some commits for Scrutinizer coverage upload + fetch-depth: 15 + - name: Use PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + # phar, json and curl are used by composer + # json is used by testing code + # dom, json, mbstring, libxml, xml, xmlwriter are used by phpunit + # tokenizer, xmlwriter and simplexml are used by phpcs + # ctype is used by Psalm + extensions: none, mbstring, phar, json, curl, tokenizer, xml, xmlwriter, simplexml, libxml, dom, ctype + coverage: xdebug + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Restore cache + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + - name: Install dependencies + run: composer install --no-interaction ${{ matrix.composer-options }} + - name: Run php tests + run: composer run phpunit + - name: Send coverage + uses: codecov/codecov-action@v3 + - name: Send coverage to Scrutinizer + uses: sudo-bot/action-scrutinizer@latest + # Do not run this step on forked versions of the main repository (example: contributor forks) + if: github.repository == 'phpmyadmin/sql-parser' + with: + cli-args: "--format=php-clover build/logs/clover.xml --revision=${{ github.event.pull_request.head.sha || github.sha }}" + + php-benchmark: + name: Benchmark on PHP ${{ matrix.php-version }} and ${{ matrix.os }} + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} + strategy: + matrix: + php-version: ["8.2", "8.3"] + os: [ubuntu-latest] + experimental: [false] + composer-options: [''] + include: + - { php-version: 'nightly', experimental: true, os: ubuntu-latest, composer-options: '--ignore-platform-reqs' } + steps: + - uses: actions/checkout@v3 + with: + # Fetch some commits for Scrutinizer coverage upload + fetch-depth: 15 + - name: Use PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + # phar, json and curl are used by composer + # json is used by testing code + # dom, json, mbstring, libxml, xml, xmlwriter are used by phpunit + # tokenizer, xmlwriter and simplexml are used by phpcs + # ctype is used by Psalm + extensions: none, mbstring, phar, json, curl, tokenizer, xml, xmlwriter, simplexml, libxml, dom, ctype + coverage: xdebug + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Restore cache + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + - name: Install dependencies + run: composer install --no-interaction ${{ matrix.composer-options }} + - name: Run benchmarks + run: composer run phpbench diff --git a/.gitignore b/.gitignore index 8ac441bef..9bc6509bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea/ vendor/ doc/ +build/ .composer.json composer.lock coverage.xml @@ -9,4 +10,8 @@ coverage.xml *sw[op] phpunit.xml phpcs.xml -/.phpunit.result.cache +.phpunit.result.cache +phpstan.neon +# Infection +infection.json +infection.log diff --git a/.scrutinizer.yml b/.scrutinizer.yml new file mode 100644 index 000000000..564ead409 --- /dev/null +++ b/.scrutinizer.yml @@ -0,0 +1,27 @@ +# scrutinizer-ci.com configuration +imports: + - php +filter: + excluded_paths: + - build/ + - tmp/ + - vendor/ + - tools/doctum-config.php +checks: + php: true +tools: + external_code_coverage: + runs: 2 # php 8.x versions + timeout: 480 # 8 min +build: + nodes: + analysis: + environment: + php: 8.2 + dependencies: + before: + - composer install + tests: + override: + - php-scrutinizer-run + - phpcs-run diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 70bc1369e..000000000 --- a/.travis.yml +++ /dev/null @@ -1,36 +0,0 @@ -language: php - -dist: trusty - -php: - - 7.1 - - 7.2 - - 7.3 - - nightly - -matrix: - fast_finish: true - allow_failures: - - php: nightly - include: - - php: 7.2 - env: DOCS=yes - - php: 7.1 - env: REQUIRE="phpmyadmin/motranslator:^3.0" - -sudo: false - -install: - - if [ -n "$REQUIRE" ] ; then composer require "$REQUIRE" ; fi - - composer install - -after_success: - - bash <(curl -s https://codecov.io/bash) - -cache: - directories: - - $HOME/.composer/cache - -script: - - if [ "$DOCS" != "yes" ] ; then ./vendor/bin/phpunit --configuration phpunit.xml.dist ; fi - - if [ "$DOCS" = "yes" ] ; then ./vendor/bin/sami.php --no-interaction update ./tools/sami-config.php ; fi diff --git a/CHANGELOG.md b/CHANGELOG.md index fe9dd5610..18f54a66f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,197 @@ # Change Log -## [Unreleased] - +## [6.0.x] - YYYY-MM-DD + +- Drop support for PHP 7.2, 7.3, 7.4, 8.0 and 8.1 +- Move `Misc::getAliases()` into `SelectStatement::getAliases()` (#454) +- Drop `USE_UTF_STRINGS` constant (#471) + +## [5.11.0] - 2025-02-22 + +### Added + +- Add Translator::setLocale() method (#599) + +### Fixed + +- Fix FORCE INDEX not been parsed correctly (#614) +- Fix parsing of ADD UNIQUE and ADD UNIQUE KEY for ALTER TABLE statements (#611) + +## [5.10.3] - 2025-01-18 + +### Fixed + +- Add "RECURSIVE" on build() for "WITH RECURSIVE" on the WithStatement class (#605) +- Fix for quadratic complexity in certain queries, which could have caused long execution times. Thanks to Maximilian Krög (GitHub user MoonE) for this fix to help improve security. + +## [5.10.2] - 2024-12-05 + +### Added + +- Add MariaDb 11.6 and 11.7 contexts (#601) +- Add context files for MySQL 9.1 (#603) + +## [5.10.1] - 2024-11-10 + +### Fixed + +- Fix parsing of ALTER TABLE … RENAME KEY (#580) +- Fix parsing table names that start with "e1" (#578) +- Improve handling of negative and overflowed offsets on TokensList (#582) +- Fix parsing of queries with 'AND' (#590) +- Fix C style comments with two asterisks (#597) +- Fix parsing of SRID in column definition (#595) + +## [5.10.0] - 2024-08-29 + +- Fix parsing of UPDATE ... SET (#577) +- Fix parsing of WITH PARSER (#563) +- Fix context files for MySQL and MariaDB (#572) (#576) +- Allow using `::class` keyword to load a context (#571) +- Fix query flags for lower-case functions (#564) +- Improve context files by using constants (#570) +- Fix case when a condition is not parsed correctly (#560) +- Support parsing KILL statements (#556) +- Fix replace clause of select statement with FOR UPDATE (#555) +- Add support for ALTER FUNCTION and ALTER PROCEDURE statements (#553) + +## [5.9.1] - 2024-08-13 + +- Allow parsing ALTER TABLE statement with column check constraint (#554) +- Add support for PHPUnit 10 (#573) + +## [5.9.0] - 2024-01-20 + +- Fix keywords not being recognized as table alias (#496) +- Add `bin/sql-parser` executable file (#517) +- Fix bind parameter in LIMIT OFFSET (#498) +- Fix using ? as a parameter (#515) + +## [5.8.2] - 2023-09-19 + +- Fix a regression with the ALTER operation (#511) + +## [5.8.1] - 2023-09-15 + +- Fix `:=` was not recognized as an operator just like `=` (#306) +- Fix `ALTER TABLE … MODIFY … ENUM('')` is being wrongly parsed (#234) +- Fix `ALTER TABLE … MODIFY … ENUM('')` is being wrongly parsed (#478) +- Fix MariaDB window function with alias gives bad linting errors (#283) +- Fix unrecognized keyword `COLLATE` in `WHERE` clauses (#491) +- Fix invalid hexadecimal prefix 0X (#508) + +## [5.8.0] - 2023-06-05 + +- Fix `ALTER EVENT RENAME TO` to use expression instead of var (#419) +- Fix incorrect order of operations to parse table/db called `` (#422) +- Fix ALTER EVENT statement with DEFINER=user modifier fails to be parsed (#418) +- Fix GROUP BY modifier WITH ROLLUP is treated as a syntax error and prevents export of SQL query results +- Fix `TokensList::getPrevious` was not able to reach very first token (#428) +- Fix `TransactionStatement::build()` "Call to a member function build() on null" when the transaction has no end +- Fix MySQL-specific commands parsing (#226) +- Fix `ALTER TABLE … RENAME COLUMN … TO …` is not understood by the parser/linter (#430) +- Fix `PARTITION` syntax errors (#377) +- Fix `ALTER USER` when used with `IDENTIFIED WITH/VIA/BY` option (#431) +- Fix `COALESCE PARTITION` in `ALTER TABLE`, rather than `COALESCE` (#323) +- Support `ALGORITHM` and `LOCK` options in `ALTER TABLE` statements (#319) +- Fix way end of functions, procedures and triggers' bodies is identified (#438) +- Fix `enclosed by` is not recognized by the parser when `fields` is in lower case (#236) +- Support `KEY` on `CreateDefinition` (#330) +- Fix `CALL` statements parsing (#372) +- Implement support for `LEFT JOIN`, `JOIN`, `INNER JOIN` on `UpdateStatement` (#260) +- Implement support for `TABLE` and `REPLACE` statements on `DESCRIBE` statements +- Fix `DESCRIBE` to allow a schema.table syntax (#445) +- Fix parsing insert queries with functions trims commas (#450) + +## [5.7.0] - 2023-01-25 + +* Performance improvement to use less the `nextToken()` function (#397) +* Lexer - Solving ambiguity on function keywords (#385) +* Implement `ALTER EVENT` (#404) +* Add `ALTER EVENT` keywords (#404) +* Drop PHP 7.1 support +* Fix the alter operation table options `RENAME INDEX x TO y` (#405) +* Fix `CreateStatement` function's options (#406) +* Fix a PHP notice on Linter using `ANALYZE` (#413) + +## [5.6.0] - 2023-01-02 + +* Add missing return types annotations +* Improve the WITH statements parser (#363) +* Add support for passing `Context::SQL_MODE*` constants to `Context::setMode` method +* Fix additional body tokens issue with `CREATE VIEW` statements (#371) +* Exclude from composer vendor bundle /tests and /phpunit.xml.dist +* Support table structure with `COMPRESSED` columns (#351) +* Add `#[\AllowDynamicProperties]` on `Statement` and `Expression` classes for PHP 8.2 support +* Support `ALTER` queries of `PARTITIONS` (#329) +* Change `Context::load()` error handling to returning a boolean value instead of throwing a `LoaderException` (#384) +* Fixed differentiating between `ANALYZE` and `EXPLAIN` statements (#386) +* Added "NOT" to the select options (#374) +* Implement the `EXPLAIN` Parser (#389) +* Context: Updated contexts to contain `multipoint` and `multipolygon` data types (#393) +* Support more keywords on `Expression` component (#399) +* Fix PHP 8.3 failing tests (#400) + +## [5.5.0] - 2021-12-08 + +* Add WITH support (#165, #331) +* Fixed BufferedQuery when it has an odd number of backslashes in the end (#340) +* Fixed the issue that ignored the body tokens when creating views with union (#343) +* Fixed parser errors on "ALTER TABLE" statements to add columns with SET type (#168) +* Fixed PHP 8.1 fatal errors on classes that "implements ArrayAccess" +* Add new contexts for MariaDB 10.4, 10.5, 10.6 (#328) +* Fixed parser errors for "ALTER USER" with options (#342) +* Fixed handling of the procedures and functions's options where part of the body (#339) +* Fix PHP notice "Undefined index: name in src/Components/Key.php#206" for table keys using expressions (#347) +* Added support for MySQL 8.0 table structure KEY expressions (#347) +* Added support for KEY order (ASC/DESC) (#296) +* Added missing KEY options for MySQL and MariaDB (#348) +* Added support for ENFORCED and NOT ENFORCED on table create queries (#341) +* Performance improvement to use less the "ord()" function (#352) +* Added support for OVER() with an alias (AS) (#197) + +## [5.4.2] - 2021-02-05 + +* Added check for quoted symbol to avoid parser error in case of keyword (#317) +* Allow PHP 8 + +## [5.4.1] - 2020-10-15 + +* Fix array_key_exists warning when parsing a "DEFAULT FALSE" token (#299) + +## [5.4.0] - 2020-10-08 + +* EXISTS is also a function. (#297) +* Fix lexer to not allow numbers with letters (#300) +* Add support for INVISIBLE keyword (#292) +* Fix the "$" might be a character used in a name (#301) +* Fix use stream_select instead of non-blocking STDIN (#309) +* Add select validation to a create view statement (#310) + +## [5.3.1] - 2020-03-20 + +* Revert some changes with the understanding of ANSI_QUOTES mode and identifiers +* Suggest motranslator 5.0 in README + +## [5.3.0] - 2020-03-20 + +* Stop instanciating an object to check its class name. (#290) +* Replace sscanf by equivalent native PHP functions because sscanf can be disabled for security reasons. (#270) +* Allow phpunit 9 +* Allow phpmyadmin/motranslator 5.0 +* Fix for php error when "INSERT INTO x SET a = 1" is "INSERT INTO x SET = 1" (#295) +* Fixed lexer fails to detect "*" as a wildcard (#288) +* Fixed ANSI_QUOTES support (#284) +* Fixed parser mistakes with comments (#156) + +## [5.2.0] - 2020-01-07 * Fix ALTER TABLE ... PRIMARY/UNIQUE KEY results in error (#267) +* Prevent overwrite of offset in Limit clause by parenthesis (#275) +* Allow SCHEMA to be used in CREATE Database statement (#231) +* Add missing options in SET statement (#255) +* Add support for DROP USER statement (#259) +* Fix php error "undefined index" when replacing a non existing clause (#249) ## [5.1.0] - 2019-11-12 @@ -24,6 +213,63 @@ * Fix for error message with multiple CALL statements (#223) * Recognize the question mark character as a parameter (#242) +## [4.7.4] - YYYY-MM-DD + +## [4.7.3] - 2021-12-08 + +- Fixed BufferedQuery when it has an odd number of backslashes in the end (#340) +- Fixed the issue that ignored the body tokens when creating views with union (#343) +- Fixed parser errors on "ALTER TABLE" statements to add columns with SET type (#168) +- Fixed parser errors for "ALTER USER" with options (#342) +- Fixed handling of the procedures and functions's options where part of the body (#339) +- Fix PHP notice "Undefined index: name in src/Components/Key.php#206" for table keys using functions (#347) +- Fix MySQL 8.0 table structure KEY expression not recognized (#347) +- Fix KEY order (ASC/DESC) not part of the KEY definition (#296) +- Fix missing KEY options for MySQL and MariaDB (#348) +- Fix validation error when using ENFORCED option (#341) + +## [4.7.2] - 2021-02-05 + +- Added check for quoted symbol to avoid parser error in case of keyword (#317) +- Adjust PHP version constraint to not support PHP 8.0 on the 4.7 series (5.x series supports it) + +## [4.7.1] - 2020-10-15 + +* Fix array_key_exists warning when parsing a "DEFAULT FALSE" token (#299) + +## [4.7.0] - 2020-10-08 + +* EXISTS is also a function. (#297) +* Fix lexer to not allow numbers with letters (#300) +* Add support for INVISIBLE keyword (#292) +* Fix the "$" might be a character used in a name (#301) +* Fix use stream_select instead of non-blocking STDIN (#309) +* Add select validation to a create view statement (#310) + +## [4.6.1] - 2020-03-20 + +* Revert some changes with the understanding of ANSI_QUOTES mode and identifiers +* Suggest motranslator 4.0 in README + +## [4.6.0] - 2020-03-20 + +* Stop instanciating an object to check its class name. (#290) +* Replace sscanf by equivalent native PHP functions because sscanf can be disabled for security reasons. (#270) +* Allow phpunit 7 +* Fix for php error when "INSERT INTO x SET a = 1" is "INSERT INTO x SET = 1" (#295) +* Fixed lexer fails to detect "*" as a wildcard (#288) +* Fixed ANSI_QUOTES support (#284) +* Fixed parser mistakes with comments (#156) + +## [4.5.0] - 2020-01-07 + +* Fix ALTER TABLE ... PRIMARY/UNIQUE KEY results in error (#267) +* Prevent overwrite of offset in Limit clause by parenthesis (#275) +* Allow SCHEMA to be used in CREATE Database statement (#231) +* Add missing options in SET statement (#255) +* Add support for DROP USER statement (#259) +* Fix php error "undefined index" when replacing a non existing clause (#249) + ## [4.4.0] - 2019-11-12 * Fix for PHP deprecations messages about implode for php 7.4+ (#258) @@ -69,7 +315,7 @@ Backport fixes from 5.0.0 to QA branch: * Fix parsing of CREATE TABLE with per field COLLATE. * Improved Context::loadClosest to better deal with corner cases. -* Localizaton updates. +* Localization updates. ## [4.2.3] - 2017-10-10 @@ -83,7 +329,7 @@ Backport fixes from 5.0.0 to QA branch: ## [4.2.1] - 2017-09-08 * Fixed minor bug in Query::getFlags. -* Localizaton updates. +* Localization updates. ## [4.2.0] - 2017-08-30 @@ -375,3 +621,11 @@ __Breaking changes:__ ## [1.0.0] - 2015-08-20 * First release of this library. + +[5.11.0]: https://github.com/phpmyadmin/sql-parser/compare/5.10.3...5.11.0 +[5.10.3]: https://github.com/phpmyadmin/sql-parser/compare/5.10.2...5.10.3 +[5.10.2]: https://github.com/phpmyadmin/sql-parser/compare/5.10.1...5.10.2 +[5.10.1]: https://github.com/phpmyadmin/sql-parser/compare/5.10.0...5.10.1 +[5.10.0]: https://github.com/phpmyadmin/sql-parser/compare/5.9.1...5.10.0 +[5.9.1]: https://github.com/phpmyadmin/sql-parser/compare/5.9.0...5.9.1 +[5.9.0]: https://github.com/phpmyadmin/sql-parser/compare/5.8.2...5.9.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 87102c64d..f89dacb30 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,12 +24,12 @@ them and to run automated tests on the code. ## Coding standards -We do follow PSR-1 and PSR-2 coding standards. +We do follow PSR-1 and PSR-2 coding standards. -You can use php-cs-fixer to fix the code to match our expectations: +You can use phpcbf to fix the code to match our expectations: ``` -php-cs-fixer fix . +./vendor/bin/phpcbf ``` ## Testsuite @@ -38,7 +38,7 @@ Our code comes with quite comprehensive testsuite, it is automatically executed on every commit and pull request, you can also run it locally: ``` -./vendor/bin/phpunit -c phpunit.xml +./vendor/bin/phpunit ``` The testsuite relies on fixtures of parser states, in case you need to @@ -48,7 +48,6 @@ regenerate some of these there are helper scripts in tools directory: # Remove file you want to regenerate rm tests/data/parser/parse.out -# Run the generator in the tools directory -cd tools -./run_generators.sh +# Run the generator located in the tools directory +./tools/run_generators.sh ``` diff --git a/README.md b/README.md index efa56f6f9..f61f70d90 100644 --- a/README.md +++ b/README.md @@ -4,25 +4,27 @@ A validating SQL lexer and parser with a focus on MySQL dialect. ## Code status -[![Build Status](https://travis-ci.org/phpmyadmin/sql-parser.svg?branch=master)](https://travis-ci.org/phpmyadmin/sql-parser) +[![Tests](https://github.com/phpmyadmin/sql-parser/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/phpmyadmin/sql-parser/actions/workflows/tests.yml?query=branch%3Amaster) [![Code Coverage](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master) [![codecov.io](https://codecov.io/github/phpmyadmin/sql-parser/coverage.svg?branch=master)](https://codecov.io/github/phpmyadmin/sql-parser?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master) [![Translation status](https://hosted.weblate.org/widgets/phpmyadmin/-/svg-badge.svg)](https://hosted.weblate.org/engage/phpmyadmin/?utm_source=widget) [![Packagist](https://img.shields.io/packagist/dt/phpmyadmin/sql-parser.svg)](https://packagist.org/packages/phpmyadmin/sql-parser) [![Open Source Helpers](https://www.codetriage.com/phpmyadmin/sql-parser/badges/users.svg)](https://www.codetriage.com/phpmyadmin/sql-parser) +[![Type coverage](https://shepherd.dev/github/phpmyadmin/sql-parser/coverage.svg)](https://shepherd.dev/github/phpmyadmin/sql-parser) +[![Infection MSI](https://badge.stryker-mutator.io/github.com/phpmyadmin/sql-parser/master)](https://infection.github.io) ## Installation Please use [Composer][1] to install: -``` +```sh composer require phpmyadmin/sql-parser ``` ## Documentation -The API documentation is available at +The API documentation is available at . ## Usage @@ -32,31 +34,32 @@ The API documentation is available at Command line utility to syntax highlight SQL query: ```sh -./vendor/bin/highlight-query --query "SELECT 1" +./vendor/bin/sql-parser --highlight --query "SELECT 1" ``` Command line utility to lint SQL query: ```sh -./vendor/bin/lint-query --query "SELECT 1" +./vendor/bin/sql-parser --lint --query "SELECT 1" ``` Command line utility to tokenize SQL query: ```sh -./vendor/bin/tokenize-query --query "SELECT 1" +./vendor/bin/sql-parser --tokenize --query "SELECT 1" ``` All commands are able to parse input from stdin (standard in), such as: ```sh -echo "SELECT 1" | ./vendor/bin/highlight-query -cat example.sql | ./vendor/bin/lint-query +echo "SELECT 1" | ./vendor/bin/sql-parser --highlight +cat example.sql | ./vendor/bin/sql-parser --lint ``` + ### Formatting SQL query ```php -echo PhpMyAdmin\SqlParser\Utils\Formatter::format($query, array('type' => 'html')); +echo PhpMyAdmin\SqlParser\Utils\Formatter::format($query, ['type' => 'html']); ``` ### Discoverying query type @@ -69,58 +72,61 @@ $query = 'OPTIMIZE TABLE tbl'; $parser = new Parser($query); $flags = Query::getFlags($parser->statements[0]); -echo $flags['querytype']; +echo $flags->queryType?->value; ``` ### Parsing and building SQL query ```php -require __DIR__."/vendor/autoload.php"; +require __DIR__ . '/vendor/autoload.php'; -$query1 = "select * from a"; +$query1 = 'select * from a'; $parser = new PhpMyAdmin\SqlParser\Parser($query1); // inspect query var_dump($parser->statements[0]); // outputs object(PhpMyAdmin\SqlParser\Statements\SelectStatement) // modify query by replacing table a with table b -$table2 = new \PhpMyAdmin\SqlParser\Components\Expression("", "b", "", ""); +$table2 = new \PhpMyAdmin\SqlParser\Components\Expression('', 'b', '', ''); $parser->statements[0]->from[0] = $table2; // build query again from an array of object(PhpMyAdmin\SqlParser\Statements\SelectStatement) to a string $statement = $parser->statements[0]; $query2 = $statement->build(); -var_dump($query2); // outputs string(19) "SELECT * FROM `b` " +var_dump($query2); // outputs string(19) 'SELECT * FROM `b` ' // Change SQL mode -PhpMyAdmin\SqlParser\Context::setMode('ANSI_QUOTES'); +PhpMyAdmin\SqlParser\Context::setMode(PhpMyAdmin\SqlParser\Context::SQL_MODE_ANSI_QUOTES); // build the query again using different quotes $query2 = $statement->build(); -var_dump($query2); // outputs string(19) "SELECT * FROM "b" " +var_dump($query2); // outputs string(19) 'SELECT * FROM "b" ' ``` ## Localization -You can localize error messages installing `phpmyadmin/motranslator` version `3.0` or newer: +You can localize error messages installing `phpmyadmin/motranslator` version `5.0` or newer: + ```sh -composer require phpmyadmin/motranslator:^3.0 +composer require phpmyadmin/motranslator:^5.0 ``` -The locale is automatically detected from your enrivonment, you can also set a different locale +The locale is automatically detected from your environment, you can also set a different locale **From cli**: + ```sh -LC_ALL=pl ./vendor/bin/lint-query --query "SELECT 1" +LC_ALL=pl ./vendor/bin/sql-parser --lint --query "SELECT 1" ``` **From php**: + ```php -require __DIR__."/vendor/autoload.php"; +require __DIR__ . '/vendor/autoload.php'; -$GLOBALS['lang'] = 'pl'; +PhpMyAdmin\SqlParser\Translator::setLocale('pl'); -$query1 = "select * from a"; +$query1 = 'select * from a'; $parser = new PhpMyAdmin\SqlParser\Parser($query1); ``` diff --git a/bin/highlight-query b/bin/highlight-query deleted file mode 100755 index a25a3e296..000000000 --- a/bin/highlight-query +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env php -runHighlight()); diff --git a/bin/lint-query b/bin/sql-parser similarity index 91% rename from bin/lint-query rename to bin/sql-parser index 8d7cd29aa..7850f75a8 100755 --- a/bin/lint-query +++ b/bin/sql-parser @@ -1,13 +1,14 @@ #!/usr/bin/env php runLint()); +exit($cli->run()); diff --git a/bin/tokenize-query b/bin/tokenize-query deleted file mode 100755 index 97012c76e..000000000 --- a/bin/tokenize-query +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env php -runTokenize()); diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index 99d09da23..000000000 --- a/codecov.yml +++ /dev/null @@ -1,3 +0,0 @@ -comment: - layout: header, changes, diff -coverage: {} diff --git a/composer.json b/composer.json index 07fd9d980..317259c54 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "phpmyadmin/sql-parser", "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", "license": "GPL-2.0-or-later", - "keywords": ["sql", "lexer", "parser", "analysis"], + "keywords": ["sql", "lexer", "parser", "analysis", "sql syntax highlighter", "sql lexer", "sql tokenizer", "sql parser", "sql linter", "query linter"], "homepage": "https://github.com/phpmyadmin/sql-parser", "authors": [ { @@ -15,27 +15,39 @@ "issues": "https://github.com/phpmyadmin/sql-parser/issues", "source": "https://github.com/phpmyadmin/sql-parser" }, + "funding": [ + { + "type": "other", + "url": "https://www.phpmyadmin.net/donate/" + } + ], "require": { - "php": "^7.1", - "symfony/polyfill-mbstring": "^1.3" + "php": "^8.2", + "symfony/polyfill-mbstring": "^1.24" }, "require-dev": { - "sami/sami": "^4.0", - "phpunit/php-code-coverage": "*", - "phpunit/phpunit": "^7.4 || ^8", - "phpmyadmin/coding-standard": "^1.0" + "phpbench/phpbench": "^1.2", + "phpmyadmin/coding-standard": "^4.0", + "phpmyadmin/motranslator": "^5.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^11.5", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.0", + "zumba/json-serializer": "^3.2" }, "conflict": { - "phpmyadmin/motranslator": "<3.0" + "phpmyadmin/motranslator": "<5.2" }, "suggest": { "ext-mbstring": "For best performance", "phpmyadmin/motranslator": "Translate messages to your favorite locale" }, "bin": [ - "bin/highlight-query", - "bin/lint-query", - "bin/tokenize-query" + "bin/sql-parser" ], "autoload": { "psr-4": { @@ -46,5 +58,42 @@ "psr-4": { "PhpMyAdmin\\SqlParser\\Tests\\": "tests" } + }, + "scripts": { + "phpcbf": "@php phpcbf", + "phpcs": "@php phpcs", + "phpstan": "@php phpstan analyse", + "psalm": "@php psalm --no-diff", + "phpunit": "@php phpunit --color=always", + "phpbench": "@php phpbench run tests/benchmarks --report=aggregate", + "test": [ + "@phpcs", + "@phpstan", + "@psalm", + "@phpunit" + ], + "update:baselines": [ + "@php phpstan analyse --generate-baseline", + "@php psalm --set-baseline=psalm-baseline.xml" + ] + }, + "config": { + "sort-packages": true, + "allow-plugins": { + "composer/package-versions-deprecated": true, + "dealerdirect/phpcodesniffer-composer-installer": true, + "phpstan/extension-installer": true + } + }, + "archive": { + "exclude": [ + "/tests", + "/phpunit.xml.dist" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "6.0-dev" + } } } diff --git a/infection.json.dist b/infection.json.dist new file mode 100644 index 000000000..3465268de --- /dev/null +++ b/infection.json.dist @@ -0,0 +1,18 @@ +{ + "source": { + "directories": [ + "src" + ] + }, + "logs": { + "text": "build/logs/infection.log", + "stryker": { + "report": "master" + } + }, + "mutators": { + "@default": true + }, + "minMsi": 84, + "minCoveredMsi": 88 +} diff --git a/locale/af/LC_MESSAGES/sqlparser.mo b/locale/af/LC_MESSAGES/sqlparser.mo index 51f466c10..903fbab0d 100644 Binary files a/locale/af/LC_MESSAGES/sqlparser.mo and b/locale/af/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/af/LC_MESSAGES/sqlparser.po b/locale/af/LC_MESSAGES/sqlparser.po index 0e23feec8..e902f27e0 100644 --- a/locale/af/LC_MESSAGES/sqlparser.po +++ b/locale/af/LC_MESSAGES/sqlparser.po @@ -1,241 +1,277 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:30+0200\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: Afrikaans \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Afrikaans \n" "Language: af\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "Nog nie geimplimenteer nie." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"’n Nuwe verklaring is gevind, maar geen afbakening tussen dit en die vorige " +"een nie." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Ontbrekende komma voor die aanvang van 'n nuwe wysigingsbewerking." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "Onherkenbare wysigingsbewerking." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d waardes is verwag, maar gevind %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "'n Openingshakie gevolg deur 'n stel waardes is verwag." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "'n Opening-hakie is verwag." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "" +msgstr "Onverwagte sleutelwoord." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "" +msgstr "Onverwagte einde van CASE-uitdrukking" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potensiële duplikaat-alias van CASE-uitdrukking." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "'n Alias wat na AS verwag word, maar gekry het " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "'n Alias is voorheen gevind." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "'n Alias is na AS verwag." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" +"'n Simboolnaam is verwag! 'n Gereserveerde sleutelwoord kan nie as 'n " +"kolomnaam gebruik word sonder agteraanhalings nie." -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "With selected:" +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Met gekose:" +msgstr "'n Simboolnaam is verwag!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "With selected:" +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Met gekose:" +msgstr "'n Komma of 'n slothakie is verwag." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "’n Sluitingshakie is verwag." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "Onherkende datatipe." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -#, fuzzy -#| msgid "With selected:" -msgid "An alias was expected." -msgstr "Met gekose:" +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "'n Uitdrukking is verwag." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "'n Alias is verwag." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "With selected:" -msgid "An expression was expected." -msgstr "Met gekose:" +msgstr "Onverwagte kolletjie." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Onverwagte teken." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "" +msgstr "'n Verrekening is verwag." + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Onverwagte einde van LOCK-uitdrukking." -#: src/Components/OptionsArray.php:143 +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "Hierdie opsie bots met \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "" +msgstr "Die ou naam van die tafel was verwag." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "Sleutelwoord \"AAN\" was verwag." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "" +msgstr "Die nuwe naam van die tafel was verwag." -#: src/Components/RenameOperation.php:153 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "Die ry is verwyder" +msgstr "'n Hernoembewerking is verwag." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "as regular expression" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "as 'n regular expression" +msgstr "Ontbrekende uitdrukking." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "" +msgstr "Onverwagte karakter." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "Verwagte witspasie(s) voor skeidingsteken." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "" +msgstr "Verwagte afbakening." -#: src/Lexer.php:843 -#, fuzzy, php-format +#: src/Lexer.php:1004 +#, php-format msgid "Ending quote %1$s was expected." -msgstr "Tabel %s is verwyder" +msgstr "Eindkwotasie %1$s is verwag." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "" +msgstr "Veranderlike naam is verwag." -#: src/Parser.php:423 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "By Begin van Tabel" +msgstr "Onverwagte begin van stelling." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "" +msgstr "Onherkende stellingtipe." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" - -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" +msgstr "Geen transaksie is voorheen begin nie." -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "Hierdie tipe klousule is voorheen ontleed." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." -msgstr "" +msgstr "Onherkende sleutelwoord." -#: src/Statement.php:377 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "By Begin van Tabel" +msgstr "Sleutelwoord aan die einde van stelling." -#: src/Statement.php:503 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "By Begin van Tabel" +msgstr "Onverwagte ordening van klousules." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "" +msgstr "Die naam van die entiteit is verwag." -#: src/Statements/CreateStatement.php:430 -#, fuzzy -#| msgid "With selected:" +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "Met gekose:" +msgstr "'n Tabelnaam is verwag." -#: src/Statements/CreateStatement.php:438 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "Die ry is verwyder" +msgstr "Ten minste een kolomdefinisie is verwag." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "'n \"TERUGKEER\"-sleutelwoord is verwag." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "" +msgstr "Hierdie tipe klousule is nie geldig in Multi-table-navrae nie." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Onverwagte einde van LOCK-stelling." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Onverwagte sleutelwoord" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Die naam van die CTE is verwag." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "AS navraag is verwag." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Subnavraag van die CTE is verwag." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Onverwagte einde van die MET CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Onverwagte einde van LOCK-uitdrukking." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "Fout" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Fout" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query" -msgid "strict error" -msgstr "Navraag dmv Voorbeeld" +#~| msgid "Query" +#~ msgid "strict error" +#~ msgstr "Navraag dmv Voorbeeld" diff --git a/locale/ar/LC_MESSAGES/sqlparser.mo b/locale/ar/LC_MESSAGES/sqlparser.mo index 71c7686d9..b29af2017 100644 Binary files a/locale/ar/LC_MESSAGES/sqlparser.mo and b/locale/ar/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ar/LC_MESSAGES/sqlparser.po b/locale/ar/LC_MESSAGES/sqlparser.po index 5ebe8aef0..6ed03eafd 100644 --- a/locale/ar/LC_MESSAGES/sqlparser.po +++ b/locale/ar/LC_MESSAGES/sqlparser.po @@ -1,67 +1,90 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-01-25 23:34+0000\n" -"Last-Translator: yagoub fadel \n" -"Language-Team: Arabic \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2024-02-01 15:02+0000\n" +"Last-Translator: Mohammed Al Otaibi \n" +"Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 2.19-dev\n" +"X-Generator: Weblate 5.4-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "لم تنفذ بعد." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "تم العثور على بيان جديد، ولكن لا يوجد محدد بينه وبين سابقه ." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "فاصلة مفقودة قبل بدء عملية تغيير جديدة." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "عملية تغيير غير معروفة." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "تم توقع قيم %1$d ، ولكن تم العثور على %2$d." +msgstr "%1$d كانت القيم متوقعة، ولكن تم العثور على %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "من المتوقع وجود قوس فتح متبوعا بمجموعة من القيم." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "من المتوقع وجود قوس مفتوح." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "كلمة رئيسية غير متوقعة." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "نهاية غير متوقعة من التعبير" +msgstr "نهاية غير متوقعة من تعبير CASE" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "من المحتمل وجود مُسَمَّى إضافي متكرر لعبارة CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "يتوقع وضع مُسَمَّى إضافي بعد AS لكن تم وضع " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "اسم مستعار موجود مسبقا ." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "كان من المتوقع اسم مستعار بعد AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -69,150 +92,181 @@ msgstr "" "كان من المتوقع وجود اسم رمز! لا يمكن استخدام كلمة رئيسية محجوزة كاسم عمود " "بدون علامات اقتباس." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "كان من المتوقع اسم رمز!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "من المتوقع وجود فاصلة أو قوس إغلاق." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "من المتوقع وجود قوس مغلق." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "نوع بيانات غير معروف." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "متوقع وجود تعبير ." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "كان من المتوقع وجود اسم مستعار." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "اسم مستعار موجود مسبقا ." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "نقطة غير متوقعة." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "متوقع وجود تعبير ." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "رمز غير متوقع." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "متوقع حدوث تعويض ." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "نهاية غير متوقعة لعبارة LOCK ." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "يتعارض هذا الخيار مع“%1$s“ ." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "متوفع وجود اسم الجدول القديم ." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "متوقع وجود الكلمة الرئيسية \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "متوقع وجود الاسم الجديد للجدول ." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "نتوقع منك اعادة تسمية ." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "تعبير مفقود ." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "حرف غير متوقع ." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "المسافات البيضاء المتوقعة قبل المحدد." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "المحدد المتوقع." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "نتوقع إنهاء الاقتباس %1$s ." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "متوقع منك اسم متغير ." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "بداية غير متوقعة للبيان." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "نوع بيان غير معروف." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "لم يتم بدء أي معاملة من قبل." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "رمز غير متوقع." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "تم تحليل هذا النوع من العبارات سابقا." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "كلمة محجوزة غير معروفة." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "الكلمة المفتاحية في نهاية الافادة" +msgstr "الكلمة المفتاحية في نهاية البيان." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "ترتيب غير متوقع للبنود." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "نتوفع منك ادراج اسم الكيان ." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "نتوقع تسمية الجدول ." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "نتوقع منك تعريف عمود علي الاقل ." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "كانت الكلمة الرئيسية \"رجوع\" متوقعة." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "هذا النوع من الشرط غير صالح في الاستعلامات متعددة الجداول." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "الخطأ رقم 1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "نهاية غير متوقعة لبيان LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "كلمة أساسية غير متوقعة" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "نتوفع منك ادراج اسم CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "كانت الكلمة الرئيسية AS متوقعة." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "الاستعلام الفرعي لCTE كان متوقعا." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "نهاية غير متوقعة لWITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "نهاية غير متوقعة لتعبير LOCK." + +#~ msgid "error #1" +#~ msgstr "الخطأ رقم 1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "خطأ صارم" +#~ msgid "strict error" +#~ msgstr "خطأ صارم" diff --git a/locale/ast/LC_MESSAGES/sqlparser.mo b/locale/ast/LC_MESSAGES/sqlparser.mo index a4ef8de29..976616d33 100644 Binary files a/locale/ast/LC_MESSAGES/sqlparser.mo and b/locale/ast/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ast/LC_MESSAGES/sqlparser.po b/locale/ast/LC_MESSAGES/sqlparser.po index 3388e7a05..b26006e7e 100644 --- a/locale/ast/LC_MESSAGES/sqlparser.po +++ b/locale/ast/LC_MESSAGES/sqlparser.po @@ -5,32 +5,36 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-09-28 07:44+0000\n" -"Last-Translator: Xuacu Saturio \n" -"Language-Team: Asturian \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-03-01 15:39+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Asturian \n" "Language: ast\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 4.16-rc\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Entá nun se desendolcó." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Alcontróse una nueva declaración, pero nun hai llendador ente ésta y la " "anterior." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operación d'alteración desconocida." @@ -39,34 +43,57 @@ msgstr "Operación d'alteración desconocida." msgid "%1$d values were expected, but found %2$d." msgstr "Esperábense %1$d valores, pero s'alcontraron %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Esperábase un corchete d'apertura siguíu por un conxuntu de valores." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Esperábase un corchete d'apertura." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Palabra clave inesperada." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Final inesperáu d'espresión CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Final inesperáu d'espresión CASE" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Alcontróse anteriormente un alcuñu." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Esperábase un alcuñu." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -74,150 +101,183 @@ msgstr "" "Esperábase un nome de símbolu. Una palabra acutada nun puede usase como nome " "de columna ensin comines." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Esperábase un nome de símbolu" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Esperábase una coma o un corchete de zarru." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Esperábase un corchete de zarru." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tipu de datu desconocíu." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Esperábase una espresión." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Esperábase un alcuñu." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Alcontróse anteriormente un alcuñu." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Puntu inesperáu." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Esperábase una espresión." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Esperábase un desplazamientu." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperáu d'espresión LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Esta opción fai conflictu con \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Esperábase'l nome anterior de la tabla." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Esperábase la palabra clave \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Esperábase'l nome nuevu de la tabla." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Esperábase una operación de cambiu de nome." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Falta una espresión." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Carácter inesperáu." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Esperábase espaciu(os) en blancu antes d'un llendador." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Esperábase un llendador." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." -msgstr "Esperábense les comines de final %1$s." +msgstr "Esperábense les comines de final %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Esperábase un nome de variable." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Final inesperáu d'espresión LOCK." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "" +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Palabra clave inesperada" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The new name of the table was expected." +msgid "The name of the CTE was expected." +msgstr "Esperábase'l nome nuevu de la tabla." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "Keyword \"TO\" was expected." +msgid "AS keyword was expected." +msgstr "Esperábase la palabra clave \"TO\"." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "Keyword \"TO\" was expected." +msgid "Subquery of the CTE was expected." +msgstr "Esperábase la palabra clave \"TO\"." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of the WITH CTE." +msgstr "Final inesperáu d'espresión CASE" + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Final inesperáu d'espresión LOCK." diff --git a/locale/az/LC_MESSAGES/sqlparser.mo b/locale/az/LC_MESSAGES/sqlparser.mo index 013c273ec..0b4ee08b3 100644 Binary files a/locale/az/LC_MESSAGES/sqlparser.mo and b/locale/az/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/az/LC_MESSAGES/sqlparser.po b/locale/az/LC_MESSAGES/sqlparser.po index eabcbad84..39712c01c 100644 --- a/locale/az/LC_MESSAGES/sqlparser.po +++ b/locale/az/LC_MESSAGES/sqlparser.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2017-11-25 14:44+0000\n" "Last-Translator: Sevdimali İsa \n" -"Language-Team: Azerbaijani \n" +"Language-Team: Azerbaijani \n" "Language: az\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,16 +15,20 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.18-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Hələki tətbiq edilməyib." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Kateqoriya olunmamış alter əməliyyatı." @@ -33,34 +37,57 @@ msgstr "Kateqoriya olunmamış alter əməliyyatı." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d gözlənilirdi, amma %2$d tapıldı." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Mötərizə ardından bir qrup dəyər gözlənilməkdə." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Gözlənilməyən açar söz." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Daha öncə alias tapıldı." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Alias gözlənilirdi." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -68,157 +95,204 @@ msgstr "" "Bir simvol adı gözlənilirdi! Dırnaqsız reserv sözlər sütün adı olaraq " "istifadə edilə bilməz." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Simvol adı gözlənilirdi!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Vergül və ya mötərizə gözlənilirdi." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Mötərizə gözlənilirdi." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tanınmayan verilən tipi." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "İfadə gözlənilməkdə." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Alias gözlənilirdi." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Daha öncə alias tapıldı." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Gözlənilməz nöqtə." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "İfadə gözlənilməkdə." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Gözlənilməyən token." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Bu seçim %1$s bununla zidiyyət təşkil edir." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Cədvəlin köhnə adı gözlənilirdi." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "\"TO\" açar sözü gözlənilirdi." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Cədvəlin yeni adı gözlənilirdi." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Yenidən adlandırma əməliyyatı gözlənilirdi." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Əksik ifadə." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Gözlənilməyən simvol." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Event %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "%1$s hadisəsi yaradıldı." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Dəyişən adı gözlənilirdi." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "İfadənin gözlənilməz başlanğıcı." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tanınmayan ifadə tipi." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Daha öncə tranzaksiya başladılmadı." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Gözlənilməyən token." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Tanınmayan açarsöz." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "İfadənin sonunda açar söz." -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "Cədvəlin başına" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "Açıq olan cədvəl sayı." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Cədvəl adı gözlənilirdi." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Ən az bir sütün açıqlaması gözlənilirdi." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "\"RETURNS\" açarsözü gözlənilirdi." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "xəta #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "İfadənin gözlənilməz başlanğıcı." + +#: src/Statements/PurgeStatement.php:138 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Gözlənilməyən açar söz." + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "Açıq olan cədvəl sayı." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "\"RETURNS\" açarsözü gözlənilirdi." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "Açıq olan cədvəl sayı." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "İfadənin gözlənilməz başlanğıcı." + +#, fuzzy +#~| msgid "Unexpected end of CASE expression" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" + +#~ msgid "error #1" +#~ msgstr "xəta #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query error" -msgid "strict error" -msgstr "Sorğu xətası" +#~| msgid "Query error" +#~ msgid "strict error" +#~ msgstr "Sorğu xətası" diff --git a/locale/be/LC_MESSAGES/sqlparser.mo b/locale/be/LC_MESSAGES/sqlparser.mo index 08adf1103..5f1f1ca7d 100644 Binary files a/locale/be/LC_MESSAGES/sqlparser.mo and b/locale/be/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/be/LC_MESSAGES/sqlparser.po b/locale/be/LC_MESSAGES/sqlparser.po index 50cc1d0b4..99a60ac4c 100644 --- a/locale/be/LC_MESSAGES/sqlparser.po +++ b/locale/be/LC_MESSAGES/sqlparser.po @@ -1,32 +1,36 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-08-22 09:47+0000\n" -"Last-Translator: Viktar Vauchkevich \n" -"Language-Team: Belarusian \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-12-07 16:30+0000\n" +"Last-Translator: kopatych \n" +"Language-Team: Belarusian \n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.17-dev\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.3-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Яшчэ не рэалізавана." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Знойдзена новае сцвярджэнне, але між ім і папярэднім няма раздзяляльніка." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Адсутнічае коска перад пачаткам новай аперацыі alter." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Нераспазнаная аперацыя змены." @@ -35,34 +39,53 @@ msgstr "Нераспазнаная аперацыя змены." msgid "%1$d values were expected, but found %2$d." msgstr "Чакалася %1$d значэнняў, а знойдзена %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Чакаліся адкрывальная дужка і спіс значэнняў." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Чакалася адкрывальная дужка." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Нечаканае ключавое слова." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Нечаканы канец CASE-выразу" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Патэнцыйны дублікат псеўданіма ў CASE-выразе." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Псеўданім чакаецца пасля AS, але атрыманы " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Псеўданім быў знайдзены раней." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Чакаўся псеўданім пасля AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +93,181 @@ msgstr "" "Чакалася назва сімвала! Зарэзерваваныя ключавыя словы нельга выкарыстоўваць " "як назву слупка без двукоссяў." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Чакалася назва сімвала!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Чакалася коска або закрывальная дужка." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Чакалася закрывальная дужка." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Нераспазнаны тып даных." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Чакаўся выраз." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Чакаўся псеўданім." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Псеўданім быў знайдзены раней." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Нечаканая кропка." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Чакаўся выраз." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Нечаканы знак." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Чакаўся соступ." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Нечаканы канец LOCK-выразу." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Гэты параметр канфліктуе з «%1$s»." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Чакалася старая назва табліцы." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Чакалаcя ключавое слова «TO»." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Чакалася новая назва табліцы." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Чакалася аперацыя перайменавання." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Адсутнічае выраз." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Нечаканы сімвал." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Чакаўся прагал(ы) перад раздзяляльнікам." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Чакаецца раздзяляльнік." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Чакалася канцавое двукоссе %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Чакалася назва зменнай." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Нечаканы пачатак сцвярджэння." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Нераспазнаны тып сцвярджэння." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Няма папярэдне запушчанай транзакцыі." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Нечаканы знак." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Гэты тып выразу быў папярэдне разабраны." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Нераспазнанае ключавое слова." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Ключавое слова ў канцы сцвярджэння." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Нечаканы парадак выразаў." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Чакалася назва сутнасці." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Чакалася назва табліцы." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Чакалася азначэнне прынамсі аднаго слупка." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Чакалася ключавое слова «RETURNS»." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Гэты тып выразу не правільны для мультытаблічных запытаў." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "памылка #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Нечаканы канец аператара LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Нечаканае ключавое слова" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Чакалася назва CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Чакалася ключавое слова \"AS\"." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Чакаўся падзапыт CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Нечаканы канец WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Нечаканы канец LOCK-выразу." + +#~ msgid "error #1" +#~ msgstr "памылка #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "недапушчальная памылка" +#~ msgid "strict error" +#~ msgstr "недапушчальная памылка" diff --git a/locale/be@latin/LC_MESSAGES/sqlparser.mo b/locale/be@latin/LC_MESSAGES/sqlparser.mo index f9857087e..744c9d2d8 100644 Binary files a/locale/be@latin/LC_MESSAGES/sqlparser.mo and b/locale/be@latin/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/be@latin/LC_MESSAGES/sqlparser.po b/locale/be@latin/LC_MESSAGES/sqlparser.po index 985816e0a..9b098af38 100644 --- a/locale/be@latin/LC_MESSAGES/sqlparser.po +++ b/locale/be@latin/LC_MESSAGES/sqlparser.po @@ -1,33 +1,37 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-08-22 09:47+0000\n" -"Last-Translator: Viktar Vauchkevich \n" -"Language-Team: Belarusian (latin) " -"\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Belarusian (latin) \n" "Language: be@latin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.17-dev\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Jašče nie realizavana." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Znojdziena novaje scviardžennie, alie miž im i papiarednim niama " "razdzialiaĺnika." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Nieraspaznanaja apieracyja zmieny." @@ -36,34 +40,57 @@ msgstr "Nieraspaznanaja apieracyja zmieny." msgid "%1$d values were expected, but found %2$d." msgstr "Čakalasia %1$d značenniaŭ, a znojdziena %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Čakalisia adkryvaĺnaja dužka i spis značenniaŭ." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Čakalasia adkryvaĺnaja dužka." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Niečakanaje kliučavoje slova." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Niečakany kaniec CASE-vyrazu" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Niečakany kaniec CASE-vyrazu" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Psieŭdanim byŭ znajdzieny raniej." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Čakaŭsia psieŭdanim." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +98,191 @@ msgstr "" "Čakalasia nazva simvala! Zareziervavanyja kliučavyja slovy nieĺha " "vykarystoŭvać jak nazvu slupka biez dvukossiaŭ." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Čakalasia nazva simvala!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Čakalasia koska abo zakryvaĺnaja dužka." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Čakalasia zakryvaĺnaja dužka." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Nieraspaznany typ danych." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Čakaŭsia vyraz." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Čakaŭsia psieŭdanim." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Psieŭdanim byŭ znajdzieny raniej." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Niečakanaja kropka." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Čakaŭsia vyraz." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Niečakany znak." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Čakaŭsia sostup." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Niečakany kaniec LOCK-vyrazu." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Hety paramietr kanfliktuje z «%1$s»." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Čakalasia staraja nazva tablicy." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Čakalacja kliučavoje slova «TO»." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Čakalasia novaja nazva tablicy." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Čakalasia apieracyja pierajmienavannia." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Adsutničaje vyraz." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Niečakany simval." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Čakaŭsia prahal(y) pierad razdzialiaĺnikam." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Čakajecca razdzialiaĺnik." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Čakalasia kancavoje dvukossie %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Čakalasia nazva zmiennaj." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Niečakany pačatak scviardžennia." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Nieraspaznany typ scviardžennia." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Niama papiarednie zapuščanaj tranzakcyi." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Niečakany znak." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Hety typ vyrazu byŭ papiarednie razabrany." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Nieraspaznanaje kliučavoje slova." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Kliučavoje slova ŭ kancy scviardžennia." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Niečakany paradak vyrazaŭ." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Čakalasia nazva sutnasci." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Čakalasia nazva tablicy." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Čakalasia aznačennie prynamsi adnaho slupka." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Čakalasia kliučavoje slova «RETURNS»." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Hety typ vyrazu nie praviĺny dlia muĺtytabličnych zapytaŭ." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "pamylka #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Niečakany pačatak scviardžennia." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Niečakanaje kliučavoje slova" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Čakalasia nazva sutnasci." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "Čakalasia kliučavoje slova «RETURNS»." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Čakalasia nazva sutnasci." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Niečakany pačatak scviardžennia." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Niečakany kaniec LOCK-vyrazu." + +#~ msgid "error #1" +#~ msgstr "pamylka #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "niedapuščaĺnaja pamylka" +#~ msgid "strict error" +#~ msgstr "niedapuščaĺnaja pamylka" diff --git a/locale/bg/LC_MESSAGES/sqlparser.mo b/locale/bg/LC_MESSAGES/sqlparser.mo index 2201811ca..1bc6410ec 100644 Binary files a/locale/bg/LC_MESSAGES/sqlparser.mo and b/locale/bg/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/bg/LC_MESSAGES/sqlparser.po b/locale/bg/LC_MESSAGES/sqlparser.po index e2d962fbf..54b0b847e 100644 --- a/locale/bg/LC_MESSAGES/sqlparser.po +++ b/locale/bg/LC_MESSAGES/sqlparser.po @@ -1,11 +1,11 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-08-07 11:22+0000\n" -"Last-Translator: Filip Obretenov \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2020-10-14 10:02+0000\n" +"Last-Translator: Пламен \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -13,245 +13,311 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.16-dev\n" +"X-Generator: Weblate 4.3-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Все още не е внедрена." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Беше открито ново изявление, но не и разграничител между него и предишния." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Липсва запетая пред началото на нова операция alter." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Неизвестна промяна на операцията." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d стойности бяха очаквани, но бяха намерени %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "Очаква се отваряща скоба последвана от списък стойности." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "Очаква се отваряща скоба." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 -#, fuzzy -#| msgid "Unexpected characters on line %s." +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "Неочаквани знаци на ред %s." +msgstr "Неочаквана ключова дума." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "" +msgstr "Неочакван край на израза CASE" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Потенциален дублиращ се псевдоним на изявата на CASE." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Псевдоним, очакван след AS, но получи " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Преди това е открит псевдоним." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Псевдоним се очакваше след AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" +"Очакваше се име на символ! Запазената ключова дума не може да се използва " +"като име на колона без обратни кавички." -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "Table name template" +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Шаблон за име на таблица" +msgstr "Очаква се име на символ!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No tables selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Няма избрани таблици." +msgstr "Очакваше се запетая или затваряща скоба." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Няма върнати редове" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No tables selected." msgid "An alias was expected." msgstr "Няма избрани таблици." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 #, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Няма върнати редове" +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "Неочаквани знаци на ред %s." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "В началото на таблицата" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." msgstr "Броят отворени таблици." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 #, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." msgstr "Броят отворени таблици." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "Редът беше изтрит" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "като регулярен израз" -#: src/Lexer.php:237 +#: src/Lexer.php:274 #, fuzzy #| msgid "Unexpected characters on line %s." msgid "Unexpected character." msgstr "Неочаквани знаци на ред %s." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Event %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "Събитието %1$s беше създадено." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "Шаблон за име на таблица" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "В началото на таблицата" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -#, fuzzy -#| msgid "Unexpected characters on line %s." -msgid "Unexpected token." -msgstr "Неочаквани знаци на ред %s." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "В началото на таблицата" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "В началото на таблицата" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "Броят отворени таблици." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "Шаблон за име на таблица" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Редът беше изтрит" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "В началото на таблицата" + +#: src/Statements/PurgeStatement.php:138 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword" +msgstr "Неочаквани знаци на ред %s." + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "Броят отворени таблици." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "Няма върнати редове" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "Броят отворени таблици." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "В началото на таблицата" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "В началото на таблицата" + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "грешки." +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "грешки." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Събиране на грешки" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Събиране на грешки" diff --git a/locale/bn/LC_MESSAGES/sqlparser.mo b/locale/bn/LC_MESSAGES/sqlparser.mo index 30c0d6241..526230488 100644 Binary files a/locale/bn/LC_MESSAGES/sqlparser.mo and b/locale/bn/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/bn/LC_MESSAGES/sqlparser.po b/locale/bn/LC_MESSAGES/sqlparser.po index 1545a20f0..7b130a14b 100644 --- a/locale/bn/LC_MESSAGES/sqlparser.po +++ b/locale/bn/LC_MESSAGES/sqlparser.po @@ -1,30 +1,35 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:44+0200\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: Bengali \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2021-03-02 18:02+0000\n" +"Last-Translator: Nokib Sarkar \n" +"Language-Team: Bengali \n" "Language: bn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 4.5\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "এখনো বাস্তবায়িত হয়নি।" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"একটি নতুন বিবৃতি পাওয়া গেছে, তবে এটি এবং পূর্ববর্তীটির মধ্যে কোনও বিভাজক নেই।" + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "নতুন অল্টার অপারেশন শুরুর আগে কমা খুঁজে পাওয়া যায় নি।" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -33,224 +38,292 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 #, fuzzy #| msgid "Unexpected characters on line %s." msgid "Unexpected keyword." msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "ডাটাবেইজ নিবার্চন করা হয়নি।" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "Table name template" msgid "A symbol name was expected!" msgstr "টেবলের নামের নকশা" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "ডাটাবেইজ নিবার্চন করা হয়নি।" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "কোন রো নির্বাচন করা হয় নাই" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "ডাটাবেইজ নিবার্চন করা হয়নি।" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 #, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "কোন রো নির্বাচন করা হয় নাই" +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "টেবিলের শুরুতে" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." msgstr "খোলা টেবিলের সংখ্যা।" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 #, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." msgstr "খোলা টেবিলের সংখ্যা।" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "রো টি মুছা হয়েছে।" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "রেগুলার এক্সপ্রেশনের মত" -#: src/Lexer.php:237 +#: src/Lexer.php:274 #, fuzzy #| msgid "Unexpected characters on line %s." msgid "Unexpected character." msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Event %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "ইভেন্ট %1$s তৈরী হয়েছে।" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "টেবলের নামের নকশা" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "টেবিলের শুরুতে" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -#, fuzzy -#| msgid "Unexpected characters on line %s." -msgid "Unexpected token." -msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "টেবিলের শুরুতে" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "টেবিলের শুরুতে" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "খোলা টেবিলের সংখ্যা।" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "টেবলের নামের নকশা" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "রো টি মুছা হয়েছে।" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "টেবিলের শুরুতে" + +#: src/Statements/PurgeStatement.php:138 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword" +msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "খোলা টেবিলের সংখ্যা।" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "কোন রো নির্বাচন করা হয় নাই" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "খোলা টেবিলের সংখ্যা।" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "টেবিলের শুরুতে" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "টেবিলের শুরুতে" + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "ভুলসমূহ" +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "ভুলসমূহ" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "ভুলসমূহ জড়ো" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "ভুলসমূহ জড়ো" diff --git a/locale/br/LC_MESSAGES/sqlparser.mo b/locale/br/LC_MESSAGES/sqlparser.mo index 1efc08623..284f532c7 100644 Binary files a/locale/br/LC_MESSAGES/sqlparser.mo and b/locale/br/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/br/LC_MESSAGES/sqlparser.po b/locale/br/LC_MESSAGES/sqlparser.po index c29378377..1a260c3dc 100644 --- a/locale/br/LC_MESSAGES/sqlparser.po +++ b/locale/br/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2014-03-28 11:07+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Breton 1;\n" "X-Generator: Weblate 1.9-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -37,212 +41,278 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No rows selected" +msgid "An alias was expected after AS." +msgstr "N'eus bet diuzet linenn ebet" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "Table name template" msgid "A symbol name was expected!" msgstr "Patrom anv taolenn" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No rows selected" msgid "A comma or a closing bracket was expected." msgstr "N'eus bet diuzet linenn ebet" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 #, fuzzy #| msgid "No rows selected" -msgid "An alias was expected." +msgid "An expression was expected." msgstr "N'eus bet diuzet linenn ebet" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +#, fuzzy +#| msgid "No rows selected" +msgid "An alias was expected." +msgstr "N'eus bet diuzet linenn ebet" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "N'eus bet diuzet linenn ebet" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected end of LOCK expression." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The bookmark has been deleted." msgid "A rename operation was expected." msgstr "Diverket eo bet ar sined." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "evel un droienn reoliek" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Routine %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "Krouet eo bet an argerzh %1s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "Patrom anv taolenn" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "Number of inserted rows" msgid "Unexpected beginning of statement." msgstr "Niver a linennoù da ensoc'hañ" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "Number of inserted rows" msgid "Keyword at end of statement." msgstr "Niver a linennoù da ensoc'hañ" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "Number of inserted rows" msgid "Unexpected ordering of clauses." msgstr "Niver a linennoù da ensoc'hañ" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "Patrom anv taolenn" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The bookmark has been deleted." msgid "At least one column definition was expected." msgstr "Diverket eo bet ar sined." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected end of LOCK statement." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "Table name template" +msgid "The name of the CTE was expected." +msgstr "Patrom anv taolenn" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "N'eus bet diuzet linenn ebet" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "Routine %1$s has been created." +msgid "Subquery of the CTE was expected." +msgstr "Krouet eo bet an argerzh %1s." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected end of the WITH CTE." +msgstr "Niver a linennoù da ensoc'hañ" + +#, fuzzy +#~| msgid "Number of inserted rows" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Niver a linennoù da ensoc'hañ" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "Fazi" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Fazi" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Dastum ar fazioù" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Dastum ar fazioù" diff --git a/locale/brx/LC_MESSAGES/sqlparser.mo b/locale/brx/LC_MESSAGES/sqlparser.mo index 5cee1dd3b..fb9eec424 100644 Binary files a/locale/brx/LC_MESSAGES/sqlparser.mo and b/locale/brx/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/brx/LC_MESSAGES/sqlparser.po b/locale/brx/LC_MESSAGES/sqlparser.po index 76813f77a..3d924cc14 100644 --- a/locale/brx/LC_MESSAGES/sqlparser.po +++ b/locale/brx/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-09-04 09:33+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Bodo \n" "Language-Team: Bosnian =2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.5-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -34,208 +38,272 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy msgid "A symbol name was expected!" msgstr "Šablon imena datoteke" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "Nije izabrana ni jedna baza." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 #, fuzzy #| msgid "No databases selected." -msgid "An alias was expected." +msgid "An expression was expected." msgstr "Nije izabrana ni jedna baza." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Nije izabrana ni jedna baza." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No databases selected." -msgid "An expression was expected." -msgstr "Nije izabrana ni jedna baza." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Na početku tabele" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "Red je obrisan" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "kao regularni izraz" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format msgid "Ending quote %1$s was expected." msgstr "Tabela %s je odbačena" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy msgid "Variable name was expected." msgstr "Šablon imena datoteke" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "Na početku tabele" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "Na početku tabele" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "Na početku tabele" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy msgid "A table name was expected." msgstr "Šablon imena datoteke" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Red je obrisan" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Na početku tabele" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +msgid "The name of the CTE was expected." +msgstr "Šablon imena datoteke" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No databases selected." +msgid "AS keyword was expected." +msgstr "Nije izabrana ni jedna baza." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +msgid "Subquery of the CTE was expected." +msgstr "Tabela %s je odbačena" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "Na početku tabele" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Na početku tabele" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "Greška" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Greška" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query type" -msgid "strict error" -msgstr "Vrsta upita" +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Vrsta upita" diff --git a/locale/ca/LC_MESSAGES/sqlparser.mo b/locale/ca/LC_MESSAGES/sqlparser.mo index 4df19d23c..ee5229ff5 100644 Binary files a/locale/ca/LC_MESSAGES/sqlparser.mo and b/locale/ca/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ca/LC_MESSAGES/sqlparser.po b/locale/ca/LC_MESSAGES/sqlparser.po index d5b2718b1..95597c41d 100644 --- a/locale/ca/LC_MESSAGES/sqlparser.po +++ b/locale/ca/LC_MESSAGES/sqlparser.po @@ -1,11 +1,11 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-01-15 17:44+0000\n" -"Last-Translator: Robert Antoni Buj Gelonch \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -13,20 +13,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.19-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Encara no implementat." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "S'ha trobat una sentència nova, però no hi ha cap delimitador entre aquesta " "i l'anterior." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operació de modificació no reconeguda." @@ -35,34 +39,57 @@ msgstr "Operació de modificació no reconeguda." msgid "%1$d values were expected, but found %2$d." msgstr "S'esperaven %1$d valors, però s'han trobat %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "S'esperava un claudàtor d'obertura seguit per un conjunt de valors." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "S'esperava un claudàtor d'obertura." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Paraula clau no esperada." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Final inesperat d'expressió CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Final inesperat d'expressió CASE" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "S'ha trobat un àlies anteriorment." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "S'esperava un àlies." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +97,191 @@ msgstr "" "S'esperava un nom de símbol! No es pot utilitzar una paraula clau reservada " "com a nom de columna sense les cometes invertides." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "S'esperava un nom de símbol!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "S'esperava una coma o un claudàtor de tancament." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "S'esperava un claudàtor de tancament." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tipus de dades desconegut." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "S'esperava una expressió." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "S'esperava un àlies." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "S'ha trobat un àlies anteriorment." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Punt inesperat." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "S'esperava una expressió." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Testimoni no esperat." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "S'esperava un desplaçament." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperat d'expressió LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Aquesta opció està en conflicte amb \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "S'esperava el nom antic de la taula." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "S'esperava la paraula clau \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "S'esperava el nom nou de la taula." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "S'esperava una operació de canvi de nom." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Expressió no trobada." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Caràcter no esperat." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "S'esperaven espais en blanc abans del delimitador." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "S'esperava un delimitador." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "S'esperava una cometa de tancament %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "S'esperava un nom de variable." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Començament no esperat de sentència." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tipus de sentència no reconegut." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "No s'ha iniciat cap transacció anteriorment." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Testimoni no esperat." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Aquest tipus de clàusula s'ha analitzat anteriorment." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Paraula clau no reconeguda." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Paraula clau al final de la sentència." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Ordre de condicions no esperat." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "S'esperava el nom de l'entitat." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "S'esperava un nom de taula." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "S'esperava al menys la definició d'una columna." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "S'esperava una paraula clau \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Aquest tipus de clàusula no és vàlid en consultes de diverses taules." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "error #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Començament no esperat de sentència." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Paraula clau no esperada" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "S'esperava el nom de l'entitat." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "S'esperava una paraula clau \"RETURNS\"." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "S'esperava el nom de l'entitat." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Començament no esperat de sentència." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Final inesperat d'expressió LOCK." + +#~ msgid "error #1" +#~ msgstr "error #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "Error estricte" +#~ msgid "strict error" +#~ msgstr "Error estricte" diff --git a/locale/ckb/LC_MESSAGES/sqlparser.mo b/locale/ckb/LC_MESSAGES/sqlparser.mo index 3ea16c378..df3cc43c4 100644 Binary files a/locale/ckb/LC_MESSAGES/sqlparser.mo and b/locale/ckb/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ckb/LC_MESSAGES/sqlparser.po b/locale/ckb/LC_MESSAGES/sqlparser.po index af816b4b5..4faa718d8 100644 --- a/locale/ckb/LC_MESSAGES/sqlparser.po +++ b/locale/ckb/LC_MESSAGES/sqlparser.po @@ -5,239 +5,274 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-11-20 15:47+0000\n" -"Last-Translator: Dana Akram \n" -"Language-Team: Kurdish Sorani \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2024-05-02 16:08+0000\n" +"Last-Translator: Ahmed kurdish \n" +"Language-Team: Kurdish (Central) \n" "Language: ckb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 5.5.3-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "هێشتا جێبەجێ نەکراوە." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"بەیاننامەیەکی نوێ دۆزرایەوە، بەڵام هیچ سنووردارکەرێک لە نێوان ئەو و " +"لێدوانەکەی پێشوودا نەبوو." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "کۆما ونبوو پێش دەستپێکردنی ئۆپەراسیۆنی گۆڕینی نوێ." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "کارکردنی گۆڕینی نەناسراو." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "بەهاکانی %1$d چاوەڕوان دەکران، بەڵام %2$d دۆزرایەوە." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "چاوەڕوان دەکرا کە بڕاکێتێکی کردنەوەی کە کۆمەڵێک بەها بەدوایدا هاتبێت." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "چاوەڕوان دەکرا بڕاکێتێکی کردنەوەی یارییەکە بێت." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "" +msgstr "وشەی سەرەکی چاوەڕواننەکراو." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "" +msgstr "کۆتایی چاوەڕواننەکراوی دەربڕینی کەیس" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "ناوی نادیاری دووبارەبوونەوەی پۆتانسێلی دەربڕینی کەیس." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "ناوی نادیارێک کە چاوەڕوان دەکرا دوای AS بەڵام بەدەستی هێنا " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "پێشتر ناوێکی نادیار دۆزرایەوە." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "چاوەڕوان دەکرا ناوی نادیار لە دوای AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" +"ناوێکی هێما چاوەڕوان دەکرا! وشەی سەرەکی یەدەگ ناتوانرێت وەک ناوی ستوونی " +"بەکاربهێنرێت بەبێ پاشکۆ." -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "No tables selected." +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." +msgstr "ناوێکی هێما چاوەڕوان دەکرا!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No tables selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." +msgstr "کۆما یان بڕاکێتی داخستنی چاوەڕوان دەکرا." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "چاوەڕوان دەکرا کە بڕاکێتی داخستنی کۆتایی بێت." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "جۆری داتا نەناسراو." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -#, fuzzy -#| msgid "No tables selected." -msgid "An alias was expected." -msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "دەربڕینێک چاوەڕوان دەکرا." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "چاوەڕوان دەکرا ناوی نادیارێک بێت." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "هیچ ڕیزێک هەڵنەبژێراوە" +msgstr "خاڵێکی چاوەڕواننەکراو." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "نیشانەیەکی چاوەڕواننەکراو." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "" +msgstr "چاوەڕوان دەکرا ئۆفسێتێک بێت." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "کۆتایی چاوەڕواننەکراوی دەربڕینی قوفڵ." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "ئەم هەڵبژاردنە لەگەڵ \"%1$s\" ناکۆکە." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "" +msgstr "ناوی کۆنی خشتەکە چاوەڕوان دەکرا." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "وشەی سەرەکی \"TO\" چاوەڕوان دەکرا." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "" +msgstr "ناوی نوێی خشتەکە چاوەڕوان دەکرا." -#: src/Components/RenameOperation.php:153 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "ڕیزەکە سڕایەوە" +msgstr "چاوەڕوان دەکرا ئۆپەراسیۆنی گۆڕینی ناوەکە ئەنجام بدرێت." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "Versions" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "وەشانەکان" +msgstr "دەربڕینی ونبوون." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "" +msgstr "کارەکتەری چاوەڕوان نەکراو." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "بۆشایی سپی چاوەڕوانکراو پێش سنووردارکەر." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "" +msgstr "سنووردارکەری چاوەڕوانکراو." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." -msgstr "" +msgstr "کۆتایی هاتنی کۆتی %1$s چاوەڕوان دەکرا." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "" +msgstr "ناوی گۆڕاو چاوەڕوان دەکرا." -#: src/Parser.php:423 -#, fuzzy -#| msgid "Number of rows" +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "ژمارەی ڕیزەکان" +msgstr "سەرەتای چاوەڕواننەکراوی لێدوان." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "" +msgstr "جۆری ڕستەی نەناسراو." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" - -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" +msgstr "پێشتر هیچ مامەڵەیەک دەستی پێنەکردبوو." -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "ئەم جۆرە بڕگەیە پێشتر شیکرابووەوە." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." -msgstr "" +msgstr "وشەی سەرەکی نەناسراو." -#: src/Statement.php:377 -#, fuzzy -#| msgid "Number of rows" +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "ژمارەی ڕیزەکان" +msgstr "وشەی سەرەکی لە کۆتایی بەیاننامەکەدا." -#: src/Statement.php:503 -#, fuzzy -#| msgid "Number of rows" +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "ژمارەی ڕیزەکان" +msgstr "ڕێکوپێکی چاوەڕواننەکراوی بڕگەکان." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "" +msgstr "ناوی قەوارەکە چاوەڕوان دەکرا." -#: src/Statements/CreateStatement.php:430 -#, fuzzy -#| msgid "No tables selected." +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." +msgstr "ناوی خشتەیەک چاوەڕوان دەکرا." -#: src/Statements/CreateStatement.php:438 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "ڕیزەکە سڕایەوە" +msgstr "بەلایەنی کەمەوە یەک پێناسەی ستوونی چاوەڕوان دەکرا." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "وشەیەکی سەرەکی \"RETURNS\" چاوەڕوان دەکرا." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "" +msgstr "ئەم جۆرە بڕگەیە لە پرسیارەکانی Multi-tableدا کاریگەر نییە." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "بەیاننامەی کۆتایی چاوەڕواننەکراوی قوفڵ." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "وشەی سەرەکی چاوەڕواننەکراو" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "ناوی CTE چاوەڕوان دەکرا." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "وشەی سەرەکی AS چاوەڕوان دەکرا." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "چاوەڕوان دەکرا پرسیاری لاوەکی لە CTE بکرێت." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "کۆتایی چاوەڕواننەکراوی لەگەڵ CTE." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "هەڵە" +#~| msgid "Number of rows" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "ژمارەی ڕیزەکان" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "" +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "هەڵە" diff --git a/locale/cs/LC_MESSAGES/sqlparser.mo b/locale/cs/LC_MESSAGES/sqlparser.mo index d90e5093b..11c79c5f9 100644 Binary files a/locale/cs/LC_MESSAGES/sqlparser.mo and b/locale/cs/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/cs/LC_MESSAGES/sqlparser.po b/locale/cs/LC_MESSAGES/sqlparser.po index 8f7b2076d..fe8f5af91 100644 --- a/locale/cs/LC_MESSAGES/sqlparser.po +++ b/locale/cs/LC_MESSAGES/sqlparser.po @@ -3,252 +3,273 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2019-04-28 12:48+0000\n" -"Last-Translator: William Desportes \n" -"Language-Team: Czech \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2022-10-25 08:02+0000\n" +"Last-Translator: mixeros \n" +"Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.6.1\n" +"X-Generator: Weblate 4.14.2-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Zatím není implementováno." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." -msgstr "" +msgstr "Byl nalezen nový výraz bez oddělovače od předchozího výrazu." -#: src/Components/AlterOperation.php:253 -#, fuzzy -#| msgid "Iconic table operations" +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Chybí čárka před začátkem nové operace změny." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "Zobrazení ikon pro operace s tabulkami" +msgstr "Nerozpoznaná operace změny." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." msgstr "Byly nalezeny %2$d hodnoty, namísto očekávaných %1$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "Byla očekávána úvodní závorka následovaná sadou hodnot." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "Byla očekávána úvodní závorka." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Neočekávané klíčové slovo." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Neočekávaný konec CASE výrazu" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Možný duplicitní alias CASE výrazu." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Za klíčovým slovem AS byl očekáván alias, ale bylo nalezeno " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Byl nalezen alias." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Za klíčovým slovem AS byl očekáván alias." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" +"Byl očekáván název symbolu! Vyhrazené klíčové slovo nelze použít jako název " +"sloupce bez zpětných apostrofů." -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "Table name template" +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Vzor pro jméno tabulky" +msgstr "Byl očekáván název symbolu!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No tables selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Nebyly vybrány žádné tabulky." +msgstr "Byla očekávána čárka nebo koncová závorka." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "Byla očekávána koncová závorka." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Nerozpoznaný datový typ." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -#, fuzzy -#| msgid "No tables selected." -msgid "An alias was expected." -msgstr "Nebyly vybrány žádné tabulky." +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Byl očekáván výraz." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "Byl očekáván alias." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No versions selected." -msgid "An expression was expected." -msgstr "Nebyly vybrány žádné verze." +msgstr "Neočekávaná tečka." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Neočekávaný token." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "" +msgstr "Byl očekáván offset." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Neočekávaný konec LOCK výrazu." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "Tato volba koliduje s \"%1$s\"." -#: src/Components/RenameOperation.php:109 -#, fuzzy -#| msgid "The number of tables that are open." +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "Počet aktuálně otevřených tabulek." +msgstr "Byl očekáván starý název tabulky." -#: src/Components/RenameOperation.php:119 -#, fuzzy +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Bylo očekáváno klíčové slovo \"TO\"." -#: src/Components/RenameOperation.php:135 -#, fuzzy -#| msgid "The number of tables that are open." +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "Počet aktuálně otevřených tabulek." +msgstr "Byl očekáván nový název tabulky." -#: src/Components/RenameOperation.php:153 -#, fuzzy -#| msgid "Template was deleted." +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "Šablona byla smazána." +msgstr "Byla očekávána operace přejmenování." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "as regular expression" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "jako regulární výraz" +msgstr "Chybí výraz." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Neočekávaný znak." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "Před oddělovačem byla očekávána mezera." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Byl očekáván oddělovač." -#: src/Lexer.php:843 -#, fuzzy, php-format -#| msgid "Event %1$s has been created." +#: src/Lexer.php:1004 +#, php-format msgid "Ending quote %1$s was expected." -msgstr "Byla vytvořena událost %1$s." +msgstr "Byly očekávány koncové uvozovky %1$s." -#: src/Lexer.php:884 -#, fuzzy -#| msgid "Table name template" +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "Vzor pro jméno tabulky" +msgstr "Byl očekáván název proměnné." -#: src/Parser.php:423 -#, fuzzy -#| msgid "at beginning of table" +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "na začátku tabulky" +msgstr "Neočekávaný začátek výrazu." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Nerozpoznaný typ výrazu." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" - -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Neočekávaný token." +msgstr "Nebyla zahájena žádná transakce." -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "Pro tento typ klauzule proběhlo parsování." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Nerozpoznané klíčové slovo." -#: src/Statement.php:377 -#, fuzzy -#| msgid "at beginning of table" +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "na začátku tabulky" +msgstr "Klíčové slovo na konci výrazu." -#: src/Statement.php:503 -#, fuzzy -#| msgid "at beginning of table" +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "na začátku tabulky" +msgstr "Neočekávané pořadí klauzulí." -#: src/Statements/CreateStatement.php:375 -#, fuzzy -#| msgid "The number of tables that are open." +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "Počet aktuálně otevřených tabulek." +msgstr "Byl očekáván název entity." -#: src/Statements/CreateStatement.php:430 -#, fuzzy -#| msgid "Table name template" +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "Bylo očekáváno jméno tabulky." +msgstr "Byl očekáván název tabulky." -#: src/Statements/CreateStatement.php:438 -#, fuzzy -#| msgid "Template was deleted." +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "Šablona byla smazána." +msgstr "Byla očekávána alespoň jedna definice sloupce." -#: src/Statements/CreateStatement.php:550 -#, fuzzy +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Bylo očekáváno klíčové slovo \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "" +msgstr "Tento typ klauzule je ve vícetabulkových dotazech neplatný." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Neočekávaný konec LOCK výrazu." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Neočekávané klíčové slovo" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Byl očekáván název CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Bylo očekáváno klíčové slovo AS." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Byl očekáván dílčí dotaz CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Neočekávaný konec WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Neočekávaný konec LOCK výrazu." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "chyba #1" +#~ msgid "error #1" +#~ msgstr "chyba #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Sbírat chyby" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Sbírat chyby" diff --git a/locale/cy/LC_MESSAGES/sqlparser.mo b/locale/cy/LC_MESSAGES/sqlparser.mo index b57e1d04f..4b29a261e 100644 Binary files a/locale/cy/LC_MESSAGES/sqlparser.mo and b/locale/cy/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/cy/LC_MESSAGES/sqlparser.po b/locale/cy/LC_MESSAGES/sqlparser.po index 1af8bb317..f21873442 100644 --- a/locale/cy/LC_MESSAGES/sqlparser.po +++ b/locale/cy/LC_MESSAGES/sqlparser.po @@ -4,9 +4,9 @@ # FIRST AUTHOR , YEAR. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-10-15 11:04+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Welsh \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Danish \n" "Language: da\n" @@ -13,20 +13,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Endnu ikke implementeret." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Et nyt statement blev fundet, men der var ingen adskillelsestegn mellem det " "og det foregående." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Ukendt alter opgave." @@ -35,34 +39,57 @@ msgstr "Ukendt alter opgave." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d værdier var ventet, men fandt %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "En kantet venstreparentes efterfulgt af et sæt værdier blev forventet." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "En kantet venstreparantes var forventet." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Uventet nøgleord." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Uventet afslutning af CASE udtryk" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Uventet afslutning af CASE udtryk" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Et alias er fundet tidligere." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Et alias var verntet." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,151 +97,192 @@ msgstr "" "Et symbolnavn var ventet! Et reserveret nøgleord kan ikke bruges som et " "feltnavn uden backquotes." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Et symbol var ventet!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Et komma eller lukke parentes var ventet." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "En kantet højreparantes var ventet." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Ukendt datatype." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Et udtryk var ventet." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Et alias var verntet." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Et alias er fundet tidligere." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Uventet punktum." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Et udtryk var ventet." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Uventet token." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "En forskydning var ventet." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Uventet afslutning af LOCK udtryk." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Denne indstilling er i konflikt med \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Tabellens gamle navn var ventet." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Nøgleordet \"TO\" var forventet." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Tabellens nye navn var ventet." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "En omdøbsopgave var ventet." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Manglende udtryk." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Uventet karakter." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Forventede whitespace(s) før adskillelsestegn." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Forventede adskillelsestegn." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Slut quote %1$s var ventet." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Variabelnavn var ventet." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Uventet start på statement." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Ukendt type af statement." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Ingen transaktion er blevet startet tidligere." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Uventet token." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Denne type af sætningskonstruktion er tidligere blevet parset." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Ukendt nøgleord." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Nøgleord i slutningen af udtryk." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Uventet clause rækkefølge." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Enhedens navn var ventet." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Et tabelnavn var ventet." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Mindst en kolonne definition var ventet." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Et \"RETURNS\" nøgleord var forventet." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" "Denn type af sætningskonstruktion er ikke gyldig i multitabel forespørgsler." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "fejl #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Uventet start på statement." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Uventet nøgleord" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Enhedens navn var ventet." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "Et \"RETURNS\" nøgleord var forventet." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Enhedens navn var ventet." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Uventet start på statement." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Uventet afslutning af LOCK udtryk." + +#~ msgid "error #1" +#~ msgstr "fejl #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "stringent fejl" +#~ msgid "strict error" +#~ msgstr "stringent fejl" diff --git a/locale/de/LC_MESSAGES/sqlparser.mo b/locale/de/LC_MESSAGES/sqlparser.mo index bc7e60a5a..3a0ea389b 100644 Binary files a/locale/de/LC_MESSAGES/sqlparser.mo and b/locale/de/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/de/LC_MESSAGES/sqlparser.po b/locale/de/LC_MESSAGES/sqlparser.po index 62321fb7e..c2ac523c8 100644 --- a/locale/de/LC_MESSAGES/sqlparser.po +++ b/locale/de/LC_MESSAGES/sqlparser.po @@ -3,9 +3,9 @@ msgid "" msgstr "" "Project-Id-Version: phpMyAdmin-docs 4.0.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-11-08 18:00+0000\n" -"Last-Translator: Thomas Artmann \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2022-03-19 21:46+0000\n" +"Last-Translator: Justin Nogossek \n" "Language-Team: German \n" "Language: de\n" @@ -13,20 +13,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 4.12-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Noch nicht implementiert." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Eine neue Anweisung wurde gefunden, aber kein Trennzeichen zwischen ihm und " "dem vorhergehenden." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Fehlendes Komma vor einer neuen ALTER-Operation." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Unerkannte ALTER-Operation." @@ -35,35 +39,54 @@ msgstr "Unerkannte ALTER-Operation." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d Werte erwartet, aber %2$d gefunden." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" "Eine öffnende Klammer, gefolgt von einer Liste von Werten, wurde erwartet." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Eine öffnende Klammer wurde erwartet." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Unerwartetes Schlüsselwort." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Unerwartetes Ende eines CASE Ausdrucks" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Möglicher doppelter Alias eines CASE Ausdrucks." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Ein Alias wurde nach AS erwartet, aber stattdessen " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Ein Alias wurde zuvor gefunden." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Ein Alias wurde nach AS erwartet." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +94,181 @@ msgstr "" "Ein Symbolname wurde erwartet! Ein reserviertes Schlüsselwort kann nicht " "ohne Backquotes als Tabellenname verwendet werden." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Ein Symbolname wurde erwartet!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Ein Komma oder eine schließende Klammer wurde erwartet." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Eine schließende Klammer wurde erwartet." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Unerkannter Datentyp." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Ein Ausdruck wurde erwartet." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Ein Alias wurde erwartet." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Ein Alias wurde zuvor gefunden." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Unerwarteter Punkt." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Ein Ausdruck wurde erwartet." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Unerwartetes Zeichen." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Ein Offset wurde erwartet." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Unerwartetes Ende eines LOCK-Ausdrucks." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Diese Option widerspricht „%1$s“." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Der ursprüngliche Tabellenname wurde erwartet." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Schlüsselwort „TO“ wurde erwartet." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Der neue Tabellenname wurde erwartet." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Eine Umbenennungsoperation wurde erwartet." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Fehlender Ausdruck." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Unerwartetes Zeichen." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Erwartete Whitespace vor dem Trennzeichen." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Erwartete Trennzeichen." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Schließendes Anführungszeichen %1$s wurde erzeugt." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Variablenname wurde erwartet." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Unerwarteter Statement-Anfang." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Unerkannte Statement-Typ." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Bisher wurde keine Transaktion gestartet." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Unerwartetes Zeichen." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Diese Art von Klausel wurde zuvor analysiert." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Unerkanntes Schlüsselwort." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Schlüsselwort am Ende der Anweisung." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Unerwartete Datensatzanforderung." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Der Name der Entität wurde erwartet." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Tabellenname wurde erwartet." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Mindestens eine Felddefinition wurde erwartet." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Ein „RETURNS“-Schlüsselwort wurde erwartet." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Diese Art von Klausel ist in Mehr-Tabellen-Anfragen nicht zulässig." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "Fehler #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Unerwartetes Ende einer LOCK-Anweisung." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Unerwartetes Schlüsselwort" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Der Name des CTE wurde erwartet." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Das Schlüsselwort AS wurde erwartet." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Es wurde eine Unterabfrage des CTE erwartet." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Unerwartetes Ende des WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Unerwartetes Ende eines LOCK-Ausdrucks." + +#~ msgid "error #1" +#~ msgstr "Fehler #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "strikter Fehler" +#~ msgid "strict error" +#~ msgstr "strikter Fehler" diff --git a/locale/el/LC_MESSAGES/sqlparser.mo b/locale/el/LC_MESSAGES/sqlparser.mo index 8a6ceb3c0..415af0ace 100644 Binary files a/locale/el/LC_MESSAGES/sqlparser.mo and b/locale/el/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/el/LC_MESSAGES/sqlparser.po b/locale/el/LC_MESSAGES/sqlparser.po index f64f21a6d..c55037839 100644 --- a/locale/el/LC_MESSAGES/sqlparser.po +++ b/locale/el/LC_MESSAGES/sqlparser.po @@ -1,32 +1,36 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-01-24 07:02+0000\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2025-07-08 10:01+0000\n" "Last-Translator: Παναγιώτης Παπάζογλου \n" -"Language-Team: Greek \n" +"Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.11-dev\n" +"X-Generator: Weblate 5.13-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Δεν εφαρμόστηκε ακόμα." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Βρέθηκε μια νέα δήλωση, αλλά χωρίς διαχωριστικό μεταξύ της και της " "προηγούμενης." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Λείπει κόμμα πριν από την έναρξη μιας νέας λειτουργίας αλλαγής." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Μη αναγνωρισμένη λειτουργία αλλαγής." @@ -35,34 +39,53 @@ msgstr "Μη αναγνωρισμένη λειτουργία αλλαγής." msgid "%1$d values were expected, but found %2$d." msgstr "Αναμενόταν %1$d τιμές, αλλά βρέθηκαν %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Αναμενόταν μια ανοιχτή αγκύλη ακολουθούμενη από ένα σύνολο τιμών." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Αναμενόταν μια ανοιχτή αγκύλη." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Μη αναμενόμενη λέξη-κλειδί." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Μη αναμενόμενο τέλος της έκφρασης CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Μη αναμενόμενο τέλος της έκφρασης CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Ένα ψευδώνυμο αναμενόταν μετά το AS αλλά πήρε " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Βρέθηκε μια ετικέτα προηγουμένως." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Ένα ψευδώνυμο αναμενόταν μετά το AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,152 +93,181 @@ msgstr "" "Αναμενόταν ένα όνομα συμβόλου! Μια δεσμευμένη λέξη-κλειδί δεν μπορεί να " "χρησιμοποιηθεί ως όνομα στήλης χωρίς εισαγωγικά." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Αναμενόταν όνομα συμβόλου!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Αναμενόταν ένα κόμμα ή μια κλειστή αγκύλη." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Αναμενόταν κλείσιμο αγκύλης." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Μη αναγνωρισμένος τύπος δεδομένων." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Αναμενόταν μια έκφραση." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Αναμενόταν μια ετικέτα." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Βρέθηκε μια ετικέτα προηγουμένως." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Μη αναμενόμενη τελεία." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Αναμενόταν μια έκφραση." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Μη αναμενόμενο τεκμήριο." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Αναμενόταν μια αντιστάθμιση." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Μη αναμενόμενο τέλος της έκφρασης LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Αυτή η επιλογή έχει διαίνεξη με το «%1$s»." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Αναμενόταν το παλαιό όνομα του πίνακα." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Αναμενόταν η λέξη-κλειδί «TO»." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Αναμενόταν το νέο όνομα του πίνακα." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Αναμενόταν μια λειτουργία μετονομασίας." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Απολεσθείσα έκφραση." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Μη αναμενόμενος χαρακτήρας." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Αναμενόταν λευκό(ά) διάστημα(τα) πριν τον διαχωριστή." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Αναμενόταν διαχωριστής." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Αναμενόταν τελικό εισαγωγικό %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Αναμενόταν όνομα μεταβλητής." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Μη αναμενόμενη έναρξη δήλωσης." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Μη αναγνωρισμένος τύπος δήλωσης." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Καμιά συναλλαγή δεν ξεκίνησε προηγουμένως." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Μη αναμενόμενο τεκμήριο." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Αυτός ο τύπος ρύτρας έχει αναλυθεί προηγουμένως." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Μη αναγνωρισμένη λέξη κλειδί." -#: src/Statement.php:377 -#, fuzzy -#| msgid "Unexpected beginning of statement." +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "Μη αναμενόμενη έναρξη δήλωσης." +msgstr "Λέξη-κλειδί στο τέλος της δήλωσης." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Μη αναμενόμενη ταξινόμηση δηλώσεων." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Αναμενόταν το όνομα της οντότητας." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Αναμενόταν όνομα πίνακα." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Αναμενόταν τουλάχιστον ένας ορισμός πεδίου." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Αναμενόταν μια λέξη-κλειδί «RETURNS»." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Αυτός ο τύπος ρύτρας δεν είναι έγκυρος σε ερωτήματα πολλαπλών πινάκων." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "σφάλμα #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Μη αναμενόμενο τέλος της δήλωσης LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Μη αναμενόμενη λέξη-κλειδί" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Αναμενόταν το όνομα της ΚΕΠ." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Αναμενόταν λέξη-κλειδί «AS»." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Αναμενόταν υποερώτημα της ΚΕΠ." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Μη αναμενόμενο τέλος της δήλωσης WITH ΚΕΠ." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Μη αναμενόμενο τέλος της έκφρασης LOCK." + +#~ msgid "error #1" +#~ msgstr "σφάλμα #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "περιορισμένο σφάλμα" +#~ msgid "strict error" +#~ msgstr "περιορισμένο σφάλμα" diff --git a/locale/en_GB/LC_MESSAGES/sqlparser.mo b/locale/en_GB/LC_MESSAGES/sqlparser.mo index 40ba959f6..ebb14f0f3 100644 Binary files a/locale/en_GB/LC_MESSAGES/sqlparser.mo and b/locale/en_GB/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/en_GB/LC_MESSAGES/sqlparser.po b/locale/en_GB/LC_MESSAGES/sqlparser.po index 545501b3d..9defa563f 100644 --- a/locale/en_GB/LC_MESSAGES/sqlparser.po +++ b/locale/en_GB/LC_MESSAGES/sqlparser.po @@ -3,31 +3,35 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-10-26 23:49+0000\n" -"Last-Translator: Bo Anderson \n" -"Language-Team: English (United Kingdom) " -"\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: English (United Kingdom) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Not implemented yet." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "A new statement was found, but no delimiter between it and the previous one." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Missing comma before start of a new alter operation." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Unrecognised alter operation." @@ -36,34 +40,53 @@ msgstr "Unrecognised alter operation." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d values were expected, but found %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "An opening bracket followed by a set of values was expected." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "An opening bracket was expected." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Unexpected keyword." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Unexpected end of CASE expression" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potential duplicate alias of CASE expression." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "An alias expected after AS but got " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "An alias was previously found." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "An alias was expected after AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +94,181 @@ msgstr "" "A symbol name was expected! A reserved keyword cannot be used as a column " "name without backquotes." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "A symbol name was expected!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "A comma or a closing bracket was expected." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "A closing bracket was expected." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Unrecognised data type." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "An expression was expected." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "An alias was expected." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "An alias was previously found." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Unexpected dot." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "An expression was expected." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Unexpected token." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "An offset was expected." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Unexpected end of LOCK expression." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "This option conflicts with \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "The old name of the table was expected." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Keyword \"TO\" was expected." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "The new name of the table was expected." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "A rename operation was expected." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Missing expression." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Unexpected character." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Expected whitespace(s) before delimiter." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Expected delimiter." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Ending quote %1$s was expected." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Variable name was expected." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Unexpected beginning of statement." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Unrecognised statement type." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "No transaction was previously started." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Unexpected token." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "This type of clause was previously parsed." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Unrecognised keyword." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Keyword at end of statement." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Unexpected ordering of clauses." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "The name of the entity was expected." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "A table name was expected." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "At least one column definition was expected." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "A \"RETURNS\" keyword was expected." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "This type of clause is not valid in Multi-table queries." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "error #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Unexpected end of LOCK statement." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Unexpected keyword" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "The name of the CTE was expected." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "AS keyword was expected." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Subquery of the CTE was expected." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Unexpected end of the WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Unexpected end of LOCK expression." + +#~ msgid "error #1" +#~ msgstr "error #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "strict error" +#~ msgid "strict error" +#~ msgstr "strict error" diff --git a/locale/eo/LC_MESSAGES/sqlparser.mo b/locale/eo/LC_MESSAGES/sqlparser.mo index 3f4f65a20..aa2b4d5c7 100644 Binary files a/locale/eo/LC_MESSAGES/sqlparser.mo and b/locale/eo/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/eo/LC_MESSAGES/sqlparser.po b/locale/eo/LC_MESSAGES/sqlparser.po index d2ab1cc11..3ca263549 100644 --- a/locale/eo/LC_MESSAGES/sqlparser.po +++ b/locale/eo/LC_MESSAGES/sqlparser.po @@ -4,9 +4,9 @@ # Automatically generated, 2014. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2016-12-21 15:58+0000\n" "Last-Translator: Michal Čihař \n" "Language-Team: Esperanto , 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-09-10 09:25+0000\n" -"Last-Translator: Franco \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2022-04-19 18:11+0000\n" +"Last-Translator: Cristian Alexander Avila González \n" "Language-Team: Spanish \n" "Language: es\n" @@ -13,20 +13,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 4.12-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Aún no implementado." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Se encontró una nueva declaración, pero no hay delimitador entre éste y el " "anterior." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Falta la coma antes de comenzar la operación de modificación." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operación de modificación desconocida." @@ -35,35 +39,54 @@ msgstr "Operación de modificación desconocida." msgid "%1$d values were expected, but found %2$d." msgstr "Se esperaban %1$d valores, pero encontró %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" "Se esperaba un corchete de apertura seguido por un conjunto de valores." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Se esperaba un corchete de apertura." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Palabra clave inesperada." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Final inesperado de expresión CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Posible alias duplicado de la expresión CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Un alias se esperaba tras AS pero se obtiene " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Se encontró anteriormente un alias." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Se esperaba un alias después de AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +94,181 @@ msgstr "" "¡Se esperaba un nombre de símbolo! Una palabra reservada no puede usarse " "como nombre de columna sin comillas." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "¡Se esperaba un nombre de símbolo!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Se esperaba una coma o un corchete de cierre." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Se esperaba un corchete de cierre." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tipo de dato desconocido." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Se esperaba una expresión." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Se esperaba un alias." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Se encontró anteriormente un alias." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Punto inesperado." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Se esperaba una expresión." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Símbolo (token) inesperado." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Se espera un desplazamiento." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperado de la expresión LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Esta opción tiene conflictos con \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Se esperaba el nombre anterior de la tabla." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Se esperaba la palabra clave \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Se esperaba el nuevo nombre de la tabla." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Se esperaba un cambio de nombre." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Expresión desaparecida." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Caracter inesperado." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Espacio(s) en blanco esperado(s) antes de delimitador." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Delimitador esperado." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Se esperaba terminar la cita %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Se esperaba el nombre de la variable." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Comienzo inesperado de declaración." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tipo de declaración desconocida." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Ninguna operación se inició anteriormente." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Símbolo (token) inesperado." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Este tipo de cláusula se analizó previamente." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Palabra clave no reconocida." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Palabra clave al final de la sentencia." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Orden inesperado de condiciones." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Se esperaba el nombre de la entidad." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Se esperaba un nombre de tabla." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Se esperaba la definición de al menos una columna." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Se esperaba una palabra \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Este tipo de cláusula no es válida en consultas multi-tabla." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "error #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Fin inesperado de la instrucción LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Palabra clave inesperada" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Se esperaba el nombre del CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Se esperaba la palabra clave AS." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Se esperaba subconsulta del CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Final inesperado del CON CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Final inesperado de la expresión de bloqueo." + +#~ msgid "error #1" +#~ msgstr "error #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "error estricto" +#~ msgid "strict error" +#~ msgstr "error estricto" diff --git a/locale/et/LC_MESSAGES/sqlparser.mo b/locale/et/LC_MESSAGES/sqlparser.mo index 45098b220..cc594b594 100644 Binary files a/locale/et/LC_MESSAGES/sqlparser.mo and b/locale/et/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/et/LC_MESSAGES/sqlparser.po b/locale/et/LC_MESSAGES/sqlparser.po index 744da529c..a1aedcf51 100644 --- a/locale/et/LC_MESSAGES/sqlparser.po +++ b/locale/et/LC_MESSAGES/sqlparser.po @@ -3,10 +3,10 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-09-06 19:45+0000\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2022-10-20 10:05+0000\n" "Last-Translator: Kristjan Räts \n" "Language-Team: Estonian \n" @@ -15,18 +15,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 4.14.2-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Hetkel veel rakendamata." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "Leiti uus lause, kuid selle ja talle järgneva vahelt puudub eraldaja." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Uue ALTER operatsiooni eest puudub koma." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Tundmatu ALTER operatsioon." @@ -35,34 +39,53 @@ msgstr "Tundmatu ALTER operatsioon." msgid "%1$d values were expected, but found %2$d." msgstr "Oodati %1$d väärtust, kuid leiti %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Oodati avanevat sulgu, millele järgnevad väärtused." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Oodati avanevat sulgu." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Ootamatu võtmesõna." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Ootamatu CASE lause lõpp" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Võimalik topelt alias CASE lauses." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Fraasi AS järel oodati aliast, kuid leiti " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Eelnevalt leiti alias." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Fraasi AS taha oodati aliast." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +93,181 @@ msgstr "" "Oodati sümboli nime! Reserveeritud võtmesõna saab kasutada veeru nimena " "ainult siis, kui ta on ühekordsete tagurpidi jutumärkide vahel." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Oodati sümboli nime!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Oodati koma või lõpetavat sulgu." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Oodati lõpetavat sulgu." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tundmatu andmetüüp." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Oodati avaldist." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Oodati aliast." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Eelnevalt leiti alias." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Ootamatu punkt." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Oodati avaldist." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Ootamatud märk." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Oodati nihet." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Ootamatu LOCK lause lõpp." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "See säte põhjustab konflikti sättega \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Oodati tabeli vana nime." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Oodati võtmesõna \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Oodati tabeli uut nime." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Oodati ümbernimetamist." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Avaldis puudub." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Ootamatu sümbol." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Oodati eraldajale eelnevat tühemikku." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Oodati eraldajat." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Oodati lõpetavat sümbolit %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Oodati muutuja nime." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Ootamatu lause algus." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tundmatut tüüpi lause." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Transaktsiooni ei olnud eelnevalt alustatud." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Ootamatud märk." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Sellist tüüpi klausel parsiti eelnevalt." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Tundmatu võtmesõna." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Võtmesõna lause lõpus." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Ootamatu lausete järjestus." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Oodati olemi nime." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Oodati tabeli nime." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Oodati vähemalt ühe veeru kirjeldust." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Oodati võtmesõna \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Sellist tüüpi klausel ei ole mitme tabeli päringus kehtiv." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "viga #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Ootamatu LOCK lause lõpp." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Ootamatu võtmesõna" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Oodati CTE nime." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Oodati võtmesõna \"AS\"." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Oodati CTE alampäringut." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Ootamatu WITH CTE lõpp." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Ootamatu LOCK lause lõpp." + +#~ msgid "error #1" +#~ msgstr "viga #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "otsene viga" +#~ msgid "strict error" +#~ msgstr "otsene viga" diff --git a/locale/eu/LC_MESSAGES/sqlparser.mo b/locale/eu/LC_MESSAGES/sqlparser.mo index 831ffa82c..151314655 100644 Binary files a/locale/eu/LC_MESSAGES/sqlparser.mo and b/locale/eu/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/eu/LC_MESSAGES/sqlparser.po b/locale/eu/LC_MESSAGES/sqlparser.po index a07fb0d65..ea3af0bcb 100644 --- a/locale/eu/LC_MESSAGES/sqlparser.po +++ b/locale/eu/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-10-15 11:26+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Basque \n" -"Language-Team: Persian \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.8-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "هنوز پیاده سازی نشده." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 -#, fuzzy +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." -msgstr "بیانیه جدیدی یافت شد،اما هیچ محدودیتی قبل و بعد از ان یافت نشد" +msgstr "بیانیه‌ی جدیدی یافت شد،اما هیچ محدودیتی قبل و بعد از آن یافت نشد." -#: src/Components/AlterOperation.php:253 -#, fuzzy +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "عملیات غیر قابل تشخیص" +msgstr "عملیاتِ تغییرِ غیر قابل تشخیص." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." msgstr "مقادیر %1$d انتظار می رود، اما %2$d یافت شد." -#: src/Components/Array2d.php:111 -#, fuzzy +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "یک براکت باز دنبال شده توسط مقادیر قرار داده شده" +msgstr "باید یک براکت آغازین و بعد از آن چند مقدار وجود داشته باشد." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 -#, fuzzy +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "یک براکت باز دنبال شده" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "یک براکت آغازین باید وجود داشته باشد." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 -#, fuzzy +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "کلمه کلیدی ناشناس" +msgstr "کلمات کلیدی غیرمنتظره." -#: src/Components/CaseExpression.php:199 -#, fuzzy +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "پایان ناشناخته عبارات" +msgstr "پایان غیرمنتظره برای عبارت CASE" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "پایان ناشناخته عبارات." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "هیچ پایگاه داده ای انتخاب نشده است." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "No databases selected." msgid "A symbol name was expected!" msgstr "هیچ پایگاه داده ای انتخاب نشده است." -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "هیچ پایگاه داده ای انتخاب نشده است." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "هیچ سطری انتخاب نشده است" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "هیچ پایگاه داده ای انتخاب نشده است." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "هیچ سطری انتخاب نشده است" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +msgid "Unexpected end of LOCK expression." +msgstr "پایان ناشناخته عبارات" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "سطر حذف گرديد" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "بعنوان مبين منظم(as regular expression)" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format msgid "Ending quote %1$s was expected." msgstr "جدول %s حذف گرديد" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "در ابتداي جدول" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "در ابتداي جدول" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "در ابتداي جدول" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "No databases selected." msgid "A table name was expected." msgstr "هیچ پایگاه داده ای انتخاب نشده است." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "سطر حذف گرديد" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "در ابتداي جدول" + +#: src/Statements/PurgeStatement.php:138 +#, fuzzy +msgid "Unexpected keyword" +msgstr "کلمه کلیدی ناشناس" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "No databases selected." +msgid "The name of the CTE was expected." +msgstr "هیچ پایگاه داده ای انتخاب نشده است." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "هیچ سطری انتخاب نشده است" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +msgid "Subquery of the CTE was expected." +msgstr "جدول %s حذف گرديد" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "در ابتداي جدول" + +#, fuzzy +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "پایان ناشناخته عبارات" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "خطا" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "خطا" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query" -msgid "strict error" -msgstr "پرس و جو" +#~| msgid "Query" +#~ msgid "strict error" +#~ msgstr "پرس و جو" diff --git a/locale/fi/LC_MESSAGES/sqlparser.mo b/locale/fi/LC_MESSAGES/sqlparser.mo index fa60e3e56..bda09bfb4 100644 Binary files a/locale/fi/LC_MESSAGES/sqlparser.mo and b/locale/fi/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/fi/LC_MESSAGES/sqlparser.po b/locale/fi/LC_MESSAGES/sqlparser.po index 20976ce45..e055226ec 100644 --- a/locale/fi/LC_MESSAGES/sqlparser.po +++ b/locale/fi/LC_MESSAGES/sqlparser.po @@ -1,31 +1,35 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-12-01 19:45+0000\n" -"Last-Translator: ekeimaja \n" -"Language-Team: Finnish \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2024-12-18 10:00+0000\n" +"Last-Translator: Ricky Tigg \n" +"Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 5.9.2-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ei vielä toteutettu." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Löydettiin uusi lauseke, muttei erotinta sen ja sitä edeltäneen välillä." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Pilkku puuttuu ennen uuden muutostoiminnon aloittamista." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Tunnistamaton \"alter\"-toiminto." @@ -34,203 +38,239 @@ msgstr "Tunnistamaton \"alter\"-toiminto." msgid "%1$d values were expected, but found %2$d." msgstr "Odotettiin arvoa %1$d , mutta löydettiin %2$d." -#: src/Components/Array2d.php:111 -#, fuzzy +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "Odotettiin avausmerkki ja sitä odotettiin seuraavan arvoja." +msgstr "Odotettiin aloitussulkua, jota seuraa joukko arvoja." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Odotettiin avausmerkkiä." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Odottamaton avainsana." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Odottamaton loppu CASE-ilmaisulle" -#: src/Components/CreateDefinition.php:223 -#, fuzzy +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE-lausekkeen mahdollinen kaksoisalias." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Alias odotettiin AS:n jälkeen, mutta sai " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Alias löytyi aiemmin." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "AS:n jälkeen odotettiin alias." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -"Odotettiin symbolin nimeä! Varattua avainsanaa ei voida käyttää palstan " -"nimenä ilman lainausmerkkejä." +"Symbolinimeä odotettiin! Varattua avainsanaa ei voi käyttää sarakkeen nimenä " +"ilman lainausmerkkejä." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Odotettiin symbolinimeä!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Odotettiin pilkkua tai sulkumerkkiä." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Odotettiin sulkumerkkiä." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tunnistamaton datatyyppi." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Odotettiin ilmaisua." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Odotettiin aliasta." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Odottamaton piste." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Odotettiin ilmaisua." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Odottamaton merkki." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Odottamaton loppu LOCK-ilmaisulle." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "Tämä vaihtoehto on ristiriidassa \"%1$s\":n kanssa." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Odotettiin vanhaa taulunimeä." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "Avainsanaa \"TO\" odotettiin." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Odotettiin uutta taulunimeä." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Odotettiin uudelleennimeämistoimintoa." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "as regular expression" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "regexp-haku" +msgstr "Puuttuva lauseke." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Odottamatton merkki." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "Odotettu välilyöntejä ennen erotinta." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "" +msgstr "Odotettu erotin." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Odotettiin loppumerkkiä %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Odotettiin muuttujaa." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Odottamaton ilmaisun alku." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "" +msgstr "Tuntematon lausuntotyyppi." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" +msgstr "Tapahtumaa ei ole aloitettu aiemmin." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Odottamaton merkki." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "Tämän tyyppinen lauseke jäsennettiin aiemmin." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." -msgstr "" +msgstr "Tuntematon avainsana." -#: src/Statement.php:377 -#, fuzzy -#| msgid "Unexpected beginning of statement." +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "Odottamaton ilmaisun alku." +msgstr "Avainsana lausunnon lopussa." -#: src/Statement.php:503 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "Taulun alkuun" +msgstr "Lausekkeiden odottamaton järjestys." -#: src/Statements/CreateStatement.php:375 -#, fuzzy -#| msgid "The number of tables that are open." +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "Avoinna olevien taulujen määrä." +msgstr "Entiteetin nimeä odotettiin." -#: src/Statements/CreateStatement.php:430 -#, fuzzy -#| msgid "Table name template" +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "Taulunimen pohja" +msgstr "Taulukon nimeä odotettiin." -#: src/Statements/CreateStatement.php:438 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "Rivi on nyt poistettu." +msgstr "Ainakin yksi sarakemäärittely odotettiin." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "Avainsanaa \"RETURNS\" odotettiin." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "" +msgstr "Tämäntyyppinen lauseke ei kelpaa usean taulukon kyselyissä." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK-lausekkeen odottamaton loppu." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Odottamaton avainsana" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "CTE:n nimeä odotettiin." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "AS-avainsana odotettiin." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "CTE:n alikyselyä odotettiin." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "WITH CTE:n odottamaton loppu." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Odottamaton loppu LOCK-ilmaisulle." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "virhettä." +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "virhettä." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Kerää virheet" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Kerää virheet" diff --git a/locale/fil/LC_MESSAGES/sqlparser.mo b/locale/fil/LC_MESSAGES/sqlparser.mo new file mode 100644 index 000000000..c2631e958 Binary files /dev/null and b/locale/fil/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/fil/LC_MESSAGES/sqlparser.po b/locale/fil/LC_MESSAGES/sqlparser.po new file mode 100644 index 000000000..b45d48038 --- /dev/null +++ b/locale/fil/LC_MESSAGES/sqlparser.po @@ -0,0 +1,269 @@ +# phpMyAdmin SQL parser translation. +# Copyright (C) 2015 - 2023 phpMyAdmin devel team +# This file is distributed under the same license as the SQL parser package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-11-11 17:57+0000\n" +"Last-Translator: John Adrian Salitico \n" +"Language-Team: Filipino \n" +"Language: fil\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1 && n != 2 && n != 3 && (n % 10 == 4 " +"|| n % 10 == 6 || n % 10 == 9);\n" +"X-Generator: Weblate 5.2-dev\n" + +#: src/Component.php:39 src/Component.php:59 +msgid "Not implemented yet." +msgstr "Hindi pa ipinatutupad." + +#: src/Components/AlterOperation.php:415 src/Statement.php:359 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"May nakitang bagong pahayag, ngunit walang delimiter sa pagitan nito at ng " +"nauna." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Nawawalang comma bago mag start ang bagong alter operation." + +#: src/Components/AlterOperation.php:472 +msgid "Unrecognized alter operation." +msgstr "Hindi narerecognized na alter operation." + +#: src/Components/Array2d.php:88 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d values ay expected, subalit nahanap ay %2$d." + +#: src/Components/Array2d.php:108 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Ang pagbubukas ng bracket sumunod ang set of values ay expected." + +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 +msgid "An opening bracket was expected." +msgstr "Ang opening bracket ay expected." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 +msgid "Unexpected keyword." +msgstr "Hindi expected na keyword." + +#: src/Components/CaseExpression.php:192 +msgid "Unexpected end of CASE expression" +msgstr "Hindi expected end ng CASE expression" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potential na duplicate alias ng CASE expression." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Ang alias ay expected pagkatapos ng AS subalit ang nakuha ay. " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Ang alias na previously found." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Ang alias na expected pagkatapos ng AS." + +#: src/Components/CreateDefinition.php:255 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Ang symbol name ay expected! Ang reserved keyword ay hindi pweding gamitin " +"as a column na pangalan ng walang backquotes." + +#: src/Components/CreateDefinition.php:268 +msgid "A symbol name was expected!" +msgstr "Ang symbol name ay expected!" + +#: src/Components/CreateDefinition.php:300 +msgid "A comma or a closing bracket was expected." +msgstr "Ang comma o ang closing bracket ay expected." + +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 +msgid "A closing bracket was expected." +msgstr "Ang closing bracket ay expected." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Unrecognized na uri ng data." + +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Ang expression ay expected." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "Ang alias ay expected." + +#: src/Components/Expression.php:403 +msgid "Unexpected dot." +msgstr "Unexpected ang dot." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Unexpected na token." + +#: src/Components/Limit.php:78 src/Components/Limit.php:105 +msgid "An offset was expected." +msgstr "Ang offset ay expected." + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Unexpected end ng LOCK expression." + +#: src/Components/OptionsArray.php:146 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Itong option ay nag kaka conflict sa \"%1$s\"." + +#: src/Components/RenameOperation.php:103 +msgid "The old name of the table was expected." +msgstr "Ang lumang pangalan ng table ay expected." + +#: src/Components/RenameOperation.php:109 +msgid "Keyword \"TO\" was expected." +msgstr "Keyword \"TO\" ay expected." + +#: src/Components/RenameOperation.php:124 +msgid "The new name of the table was expected." +msgstr "Ang bagong pangalan ng table ay expected." + +#: src/Components/RenameOperation.php:140 +msgid "A rename operation was expected." +msgstr "Ang pagpalit ng pangalan ay expected." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Nawawala ang expression." + +#: src/Lexer.php:274 +msgid "Unexpected character." +msgstr "Unexpected na character." + +#: src/Lexer.php:313 +msgid "Expected whitespace(s) before delimiter." +msgstr "Expected ang whitespace(s) bago ang delimiter." + +#: src/Lexer.php:329 src/Lexer.php:348 +msgid "Expected delimiter." +msgstr "Expected ang delimiter." + +#: src/Lexer.php:1004 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Ending quote %1$s ay expected." + +#: src/Lexer.php:1056 +msgid "Variable name was expected." +msgstr "Variable name ay expected." + +#: src/Parser.php:456 +msgid "Unexpected beginning of statement." +msgstr "Unexpected na beginning ng statement." + +#: src/Parser.php:499 +msgid "Unrecognized statement type." +msgstr "Unrecognized ang statement type." + +#: src/Parser.php:587 +msgid "No transaction was previously started." +msgstr "Walang transaction na sinumulan previously." + +#: src/Statement.php:327 +msgid "This type of clause was previously parsed." +msgstr "Itong type clause na ito was previously parsed." + +#: src/Statement.php:398 +msgid "Unrecognized keyword." +msgstr "Unrecognized na keyword." + +#: src/Statement.php:409 +msgid "Keyword at end of statement." +msgstr "Keyword sa dulo ng statemenet." + +#: src/Statement.php:555 +msgid "Unexpected ordering of clauses." +msgstr "Unexpected ordering ng mga clauses." + +#: src/Statements/CreateStatement.php:549 +msgid "The name of the entity was expected." +msgstr "The name ng entity ay expected." + +#: src/Statements/CreateStatement.php:598 +msgid "A table name was expected." +msgstr "Ang table name ay expected." + +#: src/Statements/CreateStatement.php:603 +msgid "At least one column definition was expected." +msgstr "At least isang column definition ay expected." + +#: src/Statements/CreateStatement.php:707 +msgid "A \"RETURNS\" keyword was expected." +msgstr "A \"RETURNS\" keyword ay expected." + +#: src/Statements/DeleteStatement.php:329 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Itong uri ng clause ay hindi valid sa Multi-table queries." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Unexpected end sa LOCK statement." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Unexpected ang keyword" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Ang pangalan ng CTE ay expected." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "AS keyword ay expected." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Subquery ng CTE ay expected." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Unexpected end sa WITH CTE." diff --git a/locale/fr/LC_MESSAGES/sqlparser.mo b/locale/fr/LC_MESSAGES/sqlparser.mo index f348d3e13..61b30cf64 100644 Binary files a/locale/fr/LC_MESSAGES/sqlparser.mo and b/locale/fr/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/fr/LC_MESSAGES/sqlparser.po b/locale/fr/LC_MESSAGES/sqlparser.po index 84ec6cdd7..7654b0799 100644 --- a/locale/fr/LC_MESSAGES/sqlparser.po +++ b/locale/fr/LC_MESSAGES/sqlparser.po @@ -3,30 +3,34 @@ msgid "" msgstr "" "Project-Id-Version: phpMyAdmin-docs 4.0.0-dev\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-12-23 05:01+0000\n" -"Last-Translator: tmtisfree \n" -"Language-Team: French \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Pas encore mis en œuvre." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Un nouvel énoncé a été trouvé, mais il n'y a aucun délimiteur entre celui-ci " "et le précédent." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Virgule manquante avant le début d’une nouvelle opération ALTER." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Opération ALTER non reconnue." @@ -35,34 +39,54 @@ msgstr "Opération ALTER non reconnue." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d valeurs étaient attendues, mais %2$d ont été trouvées." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "Une parenthèse gauche suivie d'un ensemble de valeurs était attendus." +msgstr "" +"Une parenthèse gauche suivie d'un ensemble de valeurs étaient attendus." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Une parenthèse gauche était attendue." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Mot clef inattendu." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Fin inattendue d'une expression CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potentiel duplicata de l'alias d'expression CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Un alias était attendu après AS mais obtenu : " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Un alias a été constaté précédemment." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Un alias était attendu après AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +94,181 @@ msgstr "" "Un nom de symbole était attendu ! Un mot clé réservé ne peut pas servir " "comme nom de colonne sans les apostrophes inverses." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Un nom de variable était attendu !" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Une virgule ou une parenthèse droite était attendus." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Une parenthèse droite était attendue." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Type de données non reconnu." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Une expression était attendue." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Un alias était attendu." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Un alias a été constaté précédemment." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Point inattendu." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Une expression était attendue." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Jeton inattendu." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Un décalage était prévu." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Fin inattendue de l'expression LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Cette option entre en conflit avec « %1$s »." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "L'ancien nom de la table était attendu." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Le mot clé « TO » était attendu." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Le nouveau nom de la table était attendu." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Une opération de renommage était attendue." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Expression manquante." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Caractère inattendu." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Des espaces ou tabulations étaient attendus avant le délimiteur." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Un délimiteur était attendu." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Un guillemet %1$s était attendu." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Un nom de variable était attendu." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Début d'énoncé inattendu." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Type d'énoncé non reconnu." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Aucune transaction n'a été précédemment démarrée." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Jeton inattendu." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Ce type de clause a été analysé précédemment." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Mot clé non reconnu." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Mot clé à la fin de l'énoncé." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Classement inattendu des clauses." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Le nom de l'entité était attendu." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Un nom de table était attendu." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "La définition d'au moins une colonne était attendue." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Le mot clé « RETURNS » était attendu." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Ce type de clause a été analysé précédemment." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "erreur #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Fin inattendue de l'instruction LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Mot clef inattendu" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Le nom du CTE était attendu." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Le mot clé AS était attendu." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Une sous-requête du CTE était attendue." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Fin inattendue du WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Fin inattendue de l'expression LOCK." + +#~ msgid "error #1" +#~ msgstr "erreur #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "erreur stricte" +#~ msgid "strict error" +#~ msgstr "erreur stricte" diff --git a/locale/fy/LC_MESSAGES/sqlparser.mo b/locale/fy/LC_MESSAGES/sqlparser.mo index 94ab1f11a..e47de4b59 100644 Binary files a/locale/fy/LC_MESSAGES/sqlparser.mo and b/locale/fy/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/fy/LC_MESSAGES/sqlparser.po b/locale/fy/LC_MESSAGES/sqlparser.po index f6c62b4c0..0e60ae1f0 100644 --- a/locale/fy/LC_MESSAGES/sqlparser.po +++ b/locale/fy/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-12-24 23:02+0000\n" "Last-Translator: Robin van der Vliet \n" "Language-Team: Frisian , 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2016-01-17 22:02+0000\n" "Last-Translator: Xosé Calvo \n" "Language-Team: Galician \n" -"Language-Team: Gujarati \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Gujarati \n" "Language: gu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "હજુ સુધી અમલમાં નથી મુકાયુ." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." +msgstr "નવો નિવેદન મળ્યો હતો, પરંતુ તે અને પાછલા એક વચ્ચે કોઈ વિભાજક અક્ષરો નથી મળયા." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." msgstr "" -"નવો નિવેદન મળ્યો હતો, પરંતુ તે અને પાછલા એક વચ્ચે કોઈ વિભાજક અક્ષરો નથી મળયા." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "આ ફેરફાર માન્ય નથી." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "%1$d આ પ્રકાર ની values અપેક્ષિત હતી, પણ મળ્યું %2$d." +msgstr "%1$d આ પ્રકાર ની values અપેક્ષિત હતી, પણ મળ્યું %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "ઓપનિંગ બ્રેકેટ અપેક્ષિત હતું." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "અનપેક્ષિત કીવર્ડ." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An offset was expected." +msgid "An alias was expected after AS." +msgstr "ઓફસેટ અપેક્ષિત હતી." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "અલ્પવિરામ અથવા કલોસિંગ બ્રેકેટની અપેક્ષા હતી." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "કલોસિંગ બ્રેકેટની અપેક્ષા હતી." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "અનપેક્ષિત ડેટા પ્રકાર." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -msgid "An alias was expected." -msgstr "" +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "નિવેદનની અપેક્ષા હતી." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." msgstr "" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "અનપેક્ષિત પૂર્ણ વિરામ." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "નિવેદનની અપેક્ષા હતી." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "ઓફસેટ અપેક્ષિત હતી." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "અનપેક્ષિત અંત LOCK નિવેદન નો." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "ટેબલનુ જૂનું નામ અપેક્ષિત હતુ." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "કીવર્ડ \"TO\" અપેક્ષિત હતો." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK statement." +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "" +#: src/Statements/PurgeStatement.php:138 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "અનપેક્ષિત કીવર્ડ." + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The old name of the table was expected." +msgid "The name of the CTE was expected." +msgstr "ટેબલનુ જૂનું નામ અપેક્ષિત હતુ." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "Keyword \"TO\" was expected." +msgid "AS keyword was expected." +msgstr "કીવર્ડ \"TO\" અપેક્ષિત હતો." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "Keyword \"TO\" was expected." +msgid "Subquery of the CTE was expected." +msgstr "કીવર્ડ \"TO\" અપેક્ષિત હતો." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of the WITH CTE." +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "અનપેક્ષિત અંત LOCK નિવેદન નો." diff --git a/locale/he/LC_MESSAGES/sqlparser.mo b/locale/he/LC_MESSAGES/sqlparser.mo index 2fda426c7..a33d244df 100644 Binary files a/locale/he/LC_MESSAGES/sqlparser.mo and b/locale/he/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/he/LC_MESSAGES/sqlparser.po b/locale/he/LC_MESSAGES/sqlparser.po index 042e7b7dc..46e07eb36 100644 --- a/locale/he/LC_MESSAGES/sqlparser.po +++ b/locale/he/LC_MESSAGES/sqlparser.po @@ -1,31 +1,35 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-04-25 11:54+0000\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-28 03:41+0000\n" "Last-Translator: Yaron Shahrabani \n" -"Language-Team: Hebrew \n" +"Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "לא מוטמע עדיין." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "נמצא ביטוי חדש, אך לא נמצא מפריד בינו לבין הביטוי הקודם." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "חסר פסיק לפני תחילת פעולת שינוי חדשה." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "פעולת שינוי בלתי מזוהה." @@ -34,34 +38,53 @@ msgstr "פעולת שינוי בלתי מזוהה." msgid "%1$d values were expected, but found %2$d." msgstr "היו אמורים להיות %1$d ערכים, אך נמצאו %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "היו אמורים להיות סוגריים מרובעים פותחים ואחריהם סדרה של ערכים." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "היו אמורים להיות סוגריים מרובעים פותחים." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "מילת מפתח בלתי צפויה." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "סיום בלתי צפוי לביטוי התניה (CASE)" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "כנראה כינוי כפול לביטוי התניה (CASE)." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "אמור היה להיות כינוי אחרי AS (בשם) אבל במקום נמצא " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "נמצא כינוי בעבר." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "אמור היה להיות כינוי אחרי ה־AS (בשם)." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -69,150 +92,181 @@ msgstr "" "אמור היה להיות שם של סמל! אסור להשתמש במילה שמורה בתור שם עמודה ללא סימן " "הטעמה משני (`)." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "אמור היה להיות שם סמל!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "אמורים היו להיות פסיק או סוגריים סוגרים." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "אמורים היו להיות סוגריים סוגרים." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "סוג הנתונים אינו מזוהה." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "אמור היה להיות ביטוי." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "אמור היה להיות כינוי." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "נמצא כינוי בעבר." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "נקודה בלתי צפויה." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "אמור היה להיות ביטוי." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "אסימון בלתי צפוי." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "אמור היה להיות היסט." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "סיום בלתי צפוי לביטוי נעילה (LOCK)." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "אפשרות זו סותרת את „%1$s”." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "אמור היה להיות השם הישן של הטבלה." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "אמורה הייתה להיות מילת המפתח „TO” (אל)." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "אמור היה להיות השם החדש של הטבלה." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "אמורה הייתה להיות פעולת שינוי שם." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "ביטוי חסר." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "תו בלתי צפוי." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "אמורים היו להיות רווחים לפני המפריד." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "אמור היה להיות מפריד." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "אמורות היו להיות מירכאות סוגרות %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "אמור היה להיות שם משתנה." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "תחילת הביטוי אינו צפוי." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "סוג המשפט בלתי מזוהה." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "לא החלה העברה בעבר." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "אסימון בלתי צפוי." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "סוג הסעיף הזה כבר נותח בעבר." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "מילת מפתח בלתי מזוהה." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "מילת מפתח בסוף משפט." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "סידור הסעיפים בלתי צפוי." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "אמור היה להיות שם היישות." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "אמור היה להיות שם טבלה." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "אמורה הייתה להיות לפחות הגדרת עמודה אחת." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "אמורה הייתה להיות מילת מפתח „RETURNS” (מחזירה)." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "סוג סעיף זה אינו תקף בשאילתות מרובות טבלאות." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "שגיאה #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "סיום בלתי צפוי להכרזת נעילה (LOCK)." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "מילת מפתח בלתי צפויה" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "אמור היה להיות שם ביטוי הטבלה השיתופית (CTE)." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "אמורה הייתה להיות מילת המפתח AS (בשם)." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "אמור היה להיות תת־שאילתה של ביטוי טבלה שיתופית (CTE)." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "סיום בלתי צפוי ל־WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "סיום בלתי צפוי לביטוי נעילה." + +#~ msgid "error #1" +#~ msgstr "שגיאה #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "שגיאת הקפדה" +#~ msgid "strict error" +#~ msgstr "שגיאת הקפדה" diff --git a/locale/hi/LC_MESSAGES/sqlparser.mo b/locale/hi/LC_MESSAGES/sqlparser.mo index 781fe5ec4..3892ab187 100644 Binary files a/locale/hi/LC_MESSAGES/sqlparser.mo and b/locale/hi/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/hi/LC_MESSAGES/sqlparser.po b/locale/hi/LC_MESSAGES/sqlparser.po index f2c4447ea..38846c789 100644 --- a/locale/hi/LC_MESSAGES/sqlparser.po +++ b/locale/hi/LC_MESSAGES/sqlparser.po @@ -1,248 +1,302 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:29+0200\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: Hindi \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "अभी लागू नहीं किया गया।" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." -msgstr "" +msgstr "एक नया कथन मिला, परंतु पूर्व कथन और नए कथन के बीच कोई सीमांकक नहीं मिला।" -#: src/Components/AlterOperation.php:253 -#, fuzzy -#| msgid "Iconic table operations" +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "नए बदलाव संक्रिया के आरंभ में अल्प विराम नही है।" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "चिह्न टेबल ऑपरेटरों" +msgstr "अमान्य बदलाव संक्रिया।" #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d आपेक्षित था परन्तु %2$d मिला।" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "एक खुला कोष्ठक आपेक्षित था।" + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "" +msgstr "अनापेक्षित बीजशब्द।" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" +msgstr "CASE वाक्यांश का अनापेक्षित अंत" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "कोइ डाटाबेस नहीं चुना गया है।" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "Table name template" +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "टेबल नाम टेम्पलेट" +msgstr "एक प्रतीक नाम आपेक्षित था!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No databases selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "कोइ डाटाबेस नहीं चुना गया है।" +msgstr "एक अल्पविराम या एक समापन कोष्ठक अपेक्षित था।" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "एक समापन कोष्ठक अपेक्षित था।" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "आंकड़े का अमान्य प्रकार।" + +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "एक वाक्यांश अपेक्षित था।" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "कोइ डाटाबेस नहीं चुना गया है।" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "कोई पंक्ति चयनित नहीं" +msgstr "अनापेक्षित बिंदु।" + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "अनापेक्षित टोकन।" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "" +msgstr "एक सीमांक अपेक्षित था।" + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK वाक्यांश का अनापेक्षित अंत।" -#: src/Components/OptionsArray.php:143 +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "Title of browser window when a table is selected" msgid "The old name of the table was expected." msgstr "ब्राउज़र विंडो का शीर्षक है जब किसी भी सर्वर का चयन नहीं किया है" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "रौ को डिलीट कर दिया" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "नियमित अभिव्यक्ति के रूप में" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Table %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "%1$s टेबल बना दिया गया है" -#: src/Lexer.php:884 -#, fuzzy -#| msgid "Table name template" +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "टेबल नाम टेम्पलेट" +msgstr "चर नाम अपेक्षित।" -#: src/Parser.php:423 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "टेबल के शुरू में" +msgstr "कथन का अनापेक्षित आरंभ।" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "" +msgstr "अमान्य कथन प्रकार।" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" +msgstr "पूर्व में कोई अंतरण आरंभ नहीं किया गया था।" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "टेबल के शुरू में" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "टेबल के शुरू में" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "टेबल नाम टेम्पलेट" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "रौ को डिलीट कर दिया" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "टेबल के शुरू में" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "Title of browser window when a table is selected" +msgid "The name of the CTE was expected." +msgstr "ब्राउज़र विंडो का शीर्षक है जब किसी भी सर्वर का चयन नहीं किया है" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "An offset was expected." +msgid "AS keyword was expected." +msgstr "एक सीमांक अपेक्षित था।" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "An offset was expected." +msgid "Subquery of the CTE was expected." +msgstr "एक सीमांक अपेक्षित था।" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "टेबल के शुरू में" + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "LOCK वाक्यांश का अनापेक्षित अंत।" + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "त्रुटियों" +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "त्रुटियों" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "त्रुटियों को इकट्ठा करें" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "त्रुटियों को इकट्ठा करें" diff --git a/locale/hr/LC_MESSAGES/sqlparser.mo b/locale/hr/LC_MESSAGES/sqlparser.mo index 265163fd6..aca8c1584 100644 Binary files a/locale/hr/LC_MESSAGES/sqlparser.mo and b/locale/hr/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/hr/LC_MESSAGES/sqlparser.po b/locale/hr/LC_MESSAGES/sqlparser.po index 4a15cd99d..160edaab3 100644 --- a/locale/hr/LC_MESSAGES/sqlparser.po +++ b/locale/hr/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-10-15 11:24+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Croatian =2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.5-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -34,215 +38,281 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nema odabrane baze podataka." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy msgid "A symbol name was expected!" msgstr "Predložak naziva datoteka" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "Nema odabrane baze podataka." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Nema odabranih redova" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "Nema odabrane baze podataka." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Nema odabranih redova" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Pri početku tablice" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." msgstr "Broj otvorenih tablica." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 #, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." msgstr "Broj otvorenih tablica." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "Redak je izbrisan" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "kao regularan izraz" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Table %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "Tablica %1$s je izrađena." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy msgid "Variable name was expected." msgstr "Predložak naziva datoteka" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "Pri početku tablice" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "Pri početku tablice" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "Pri početku tablice" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "Broj otvorenih tablica." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy msgid "A table name was expected." msgstr "Predložak naziva datoteka" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Redak je izbrisan" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Pri početku tablice" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "Broj otvorenih tablica." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "Nema odabranih redova" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "Broj otvorenih tablica." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "Pri početku tablice" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Pri početku tablice" + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "greške." +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "greške." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Skupi greške" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Skupi greške" diff --git a/locale/hu/LC_MESSAGES/sqlparser.mo b/locale/hu/LC_MESSAGES/sqlparser.mo index 27db8b549..db3ba8c64 100644 Binary files a/locale/hu/LC_MESSAGES/sqlparser.mo and b/locale/hu/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/hu/LC_MESSAGES/sqlparser.po b/locale/hu/LC_MESSAGES/sqlparser.po index a6d6b9866..e96a7cd0b 100644 --- a/locale/hu/LC_MESSAGES/sqlparser.po +++ b/locale/hu/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2016-12-21 15:58+0000\n" "Last-Translator: Michal Čihař \n" "Language-Team: Hungarian \n" "Language-Team: Armenian \n" -"Language-Team: Interlingua \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Interlingua \n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ancora non actuate." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "On trovava un nove declaration, ma il non ha alcun demarcator inter isto e " "le previe." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "mancante comma ante initiar un nove operation de alterar." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operation d alteration non recognoscite." @@ -39,34 +43,53 @@ msgstr "Operation d alteration non recognoscite." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d valores esseva expectate, ma il trovava %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "On expectava un parenthesis aperite sequite per un insimul de valores." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "On expectava un parenthesis aperite." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Un parola clave non expectate." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Un fin inexpectate del expression CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Un potential alias duplicate del expression CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Un alias attendite post AS ma obteneva " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Previemente on trovava un pseudonymo." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "On expectava un pseudonymo AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -74,150 +97,189 @@ msgstr "" "On expectava un nomine de symbolo! Un parola clave reservate non pte esser " "usate como nomine de columna sin retro citationes (backquotes)." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "On expectava un nomine de symbolo!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "On expectava un comma o un parentheses claudite." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "On expectava un parenthesis claudite." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Typo de datos non cognoscite." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "On expectava un expression." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "On expectava un alias." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Previemente on trovava un pseudonymo." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Puncto inexpectate." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "On expectava un expression." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Un indicio non expectate." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "On expectava un displaciamento." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Un fin inexpectate del expression LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Iste option conflige con \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "On expectava le vetule nomine de le tabella." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "On expectava le parola clave \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "On expectava le nove nomine del tabella." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "On expectava un operation de renominar.." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Expression mancante." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "Un character non expectate." +msgstr "Un character non expectate." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "On expectava spatio(s) blanc ante le demarcator." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "On expectava demarcator." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "On expectava le fin de citation %1$s ." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "On expectava un nomine de variabile." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Un initio de instruction non expectate." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Typo de declaration non recognoscite." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Necun transaction esseva initiate previemente." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Un indicio non expectate." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Iste typo de proposition esseva analysate previemente." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Parola clave non recognoscite." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Parola clave al fin del instruction." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "Un ordine de clausas non expectate." +msgstr "Un ordine de clausas non expectate." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "On expectava le nomine del entitate." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "On expectava un nomine de tabella." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "On expectava al minus un definition de columna." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "On expectava le parola clave \"RETURN\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Iste typo de proposition non es valide in query de multi-tabella." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "error #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Un initio de instruction LOCK non expectate." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Un parola clave non expectate" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "On expectava le nomine del entitate." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "On expectava le parola clave \"RETURN\"." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "On expectava le nomine del entitate." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected end of LOCK statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Un initio de instruction LOCK non expectate." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Un fin inexpectate del expression LOCK." + +#~ msgid "error #1" +#~ msgstr "error #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "stricte error" +#~ msgid "strict error" +#~ msgstr "stricte error" diff --git a/locale/id/LC_MESSAGES/sqlparser.mo b/locale/id/LC_MESSAGES/sqlparser.mo index ca04a1372..0aa612fb0 100644 Binary files a/locale/id/LC_MESSAGES/sqlparser.mo and b/locale/id/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/id/LC_MESSAGES/sqlparser.po b/locale/id/LC_MESSAGES/sqlparser.po index 318f899c3..706f6d140 100644 --- a/locale/id/LC_MESSAGES/sqlparser.po +++ b/locale/id/LC_MESSAGES/sqlparser.po @@ -1,12 +1,11 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2019-03-11 15:03+0000\n" -"Last-Translator: Muhammad Rifqi Priyo Susanto " -"\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Indonesian \n" "Language: id\n" @@ -14,21 +13,25 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.5.1\n" +"X-Generator: Weblate 4.16-dev\n" "X-Poedit-Basepath: ../../..\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Belum diimplementasikan." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Suatu pernyataan baru ditemukan, tetapi tanpa pembatas antara itu dan " "sebelumnya." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Tidak ada koma sebelum memulai operasi perubahan baru." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operasi ubah tabel (alter) tak dikenal." @@ -37,34 +40,53 @@ msgstr "Operasi ubah tabel (alter) tak dikenal." msgid "%1$d values were expected, but found %2$d." msgstr "Nilai %1$d diharapkan. Namun, ditemukan %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Sebuah kurung buka yang diikuti oleh nilai-nilai diharapkan." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Sebuah kurung buka diharapkan." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Kata kunci tak terduga." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Akhir operasi CASE tak terduga" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Alias potensial duplikat dari ekspresi CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Alias yang diharapkan setelah AS tetapi didapat " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Sebuah alias telah ditemukan sebelumnya." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Sebuah alias diharapkan." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -72,150 +94,181 @@ msgstr "" "Sebuah nama simbol diharapkan! Kata kunci yang telah diatur tidak dapat " "digunakan sebagai nama kolom tanpa tanda kutip." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Sebuah nama simbol diharapkan!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Sebuah koma atau kurung tutup diharapkan." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Sebuah kurung tutup diharapkan." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tipe data tak dikenal." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Sebuah perintah (expression) diharapkan." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Sebuah alias diharapkan." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Sebuah alias telah ditemukan sebelumnya." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Titik tak terduga." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Sebuah perintah (expression) diharapkan." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Token tak terduga." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Suatu pergeseran (offset) diharapkan." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Akhir ekspresi LOCK tak terduga." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Pilihan ini bertentangan dengan \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Nama lama tabel diharapkan." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Kata kunci \"TO\" diharapkan." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Nama baru tabel diharapkan." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Sebuah operasi ganti nama diharapkan." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Perintah (expression) hilang." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Karakter tak terduga." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Mengharapkan spasi sebelum pembatas." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Mengharapkan pembatas." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Petik akhir %1$s diharapkan." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Nama variabel diharapkan." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Awal pernyataan tak terduga." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Jenis pernyataan tak dikenal." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Tidak ada transaksi yang dimulai sebelumnya." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Token tak terduga." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Jenis klausa ini telah diurai sebelumnya." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Kata kunci tak dikenal." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Kata kunci pada akhir pernyataan." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Pengurutan klausa tak terduga." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Nama entitas diharapkan." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Sebuah nama tabel diharapkan." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Setidaknya satu definisi kolom diharapkan." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Sebuah kata kunci \"RETURNS\" diharapkan." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Jenis klausa ini tidak sah dalam kueri multitabel." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "galat #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Awal pernyataan tak terduga." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Kata kunci tidak ada" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Nama CTE diharapkan." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "kata kunci AS diharapkan." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Subquery dari CTE diharapkan." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Akhir yang tidak terduga dari WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Akhir ekspresi Lock tak terduga." + +#~ msgid "error #1" +#~ msgstr "galat #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "galat ketat" +#~ msgid "strict error" +#~ msgstr "galat ketat" diff --git a/locale/it/LC_MESSAGES/sqlparser.mo b/locale/it/LC_MESSAGES/sqlparser.mo index 05b2da850..241c823e0 100644 Binary files a/locale/it/LC_MESSAGES/sqlparser.mo and b/locale/it/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/it/LC_MESSAGES/sqlparser.po b/locale/it/LC_MESSAGES/sqlparser.po index 4e5f12b25..133e92dae 100644 --- a/locale/it/LC_MESSAGES/sqlparser.po +++ b/locale/it/LC_MESSAGES/sqlparser.po @@ -1,11 +1,11 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-09-09 08:40+0000\n" -"Last-Translator: Dan Ungureanu \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Italian \n" "Language: it\n" @@ -13,20 +13,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Non ancora implementato." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -"E' stato trovato un nuovo statement, ma c'è alcun delimitatore tra questo " +"E' stato trovato un nuovo statement, ma non c'è alcun delimitatore tra il " "nuovo statement e il precedente." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Virgola assente prima dell'inizio di una nuova operazione alter." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operazione di modifica non riconosciuta." @@ -35,34 +39,53 @@ msgstr "Operazione di modifica non riconosciuta." msgid "%1$d values were expected, but found %2$d." msgstr "Erano attesi %1$d valori, ma ne sono stati trovati %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Era attesa una parentesi aperta seguita da un insieme di valori." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Era attesa una parentesi aperta." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Keyword inaspettata." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Inattesa fine dell'espressione CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potenziale alias duplicato dell'espressione CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Atteso un alias dopo AS ma trovato " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Un alias è stato trovato precedentemente." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Era atteso un alias dopo AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +93,181 @@ msgstr "" "Era atteso un nome di simbolo! Un termine riservato non può essere usato " "come nome di un campo senza inserirlo tra backquotes ( ` )." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Era atteso un nome di simbolo!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Era attesa una virgola o una parentesi chiusa." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Era attesa una parentesi chiusa." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tipo dati non riconosciuto." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Era attesa un'espressione." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Era atteso un alias." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Un alias è stato trovato precedentemente." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Segno di punteggiatura \"punto\" inatteso." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Era attesa un'espressione." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Token inatteso." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Era atteso un offset." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Inattesa fine dell'espressione LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Questa opzione è in conflitto con \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Era atteso il vecchio nome della tabella." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Era attesa la parola chiave \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Era atteso il nuovo nome della tabella." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Era attesa una operazione di rinomina." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Espressione mancante." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Carattere inatteso." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Erano attesi uno o più spazi bianchi prima del delimitatore." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Era atteso un delimitatore." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Era atteso il fine quote %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Era atteso un nome di variabile." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Inizio di statement inatteso." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tipo statement non riconosciuto." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Non è stata iniziata alcuna transazione in precedenza." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Token inatteso." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Questo tipo di clausola è stata esaminata in precedenza." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Parola chiave non riconosciuta." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Parola chiave alla fine dello statement." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Ordinamento di clausole inatteso." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Era atteso il nome dell'entity." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Era atteso un nome di tabella." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Era attesa almeno la definizione di un campo." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Era attesa una parola chiave \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Questo tipo di clausola non è valida nelle query Multi-tabella." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "errore #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Inattesa fine dello statement LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Keyword inaspettata" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Era atteso il nome della CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Era attesa la parola chiave AS." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Era attesa una subquery della CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Inattesa fine dell'espressione WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Inattesa fine dell'espressione LOCK." + +#~ msgid "error #1" +#~ msgstr "errore #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "errore di tipo strict" +#~ msgid "strict error" +#~ msgstr "errore di tipo strict" diff --git a/locale/ja/LC_MESSAGES/sqlparser.mo b/locale/ja/LC_MESSAGES/sqlparser.mo index 836f25d55..5f7c0bd13 100644 Binary files a/locale/ja/LC_MESSAGES/sqlparser.mo and b/locale/ja/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ja/LC_MESSAGES/sqlparser.po b/locale/ja/LC_MESSAGES/sqlparser.po index f8626b068..f2d28a7c3 100644 --- a/locale/ja/LC_MESSAGES/sqlparser.po +++ b/locale/ja/LC_MESSAGES/sqlparser.po @@ -1,32 +1,36 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2019-02-22 16:18+0000\n" -"Last-Translator: Joshua PowellNishiyama \n" -"Language-Team: Japanese \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.5-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "実装されていません。" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -"新しいステートメントが見つかりましたが、それとその前の間に区切り文字がありま" +"新しいステートメントが見つかりましたが、その前の文との間に区切り文字がありま" "せん。" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "新しい ALTER 操作を開始する前にカンマがありません。" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "認識できない alter 操作。" @@ -35,183 +39,235 @@ msgstr "認識できない alter 操作。" msgid "%1$d values were expected, but found %2$d." msgstr "値 %1$d があるべきですが、 %2$d が見つかりました。" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "左括弧とそれに続く一連の値が予期されていました。" +msgstr "左括弧とそれに続く一連の値があるべきです。" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "左括弧が予期されていました。" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "左括弧が必要です。" + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "予期しないキーワード。" +msgstr "予期しないキーワードです。" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "予期しないCASE式の終了" +msgstr "予期しない CASE 式の終了" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE 式でエイリアスが重複している可能性があります。" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "AS の後にエイリアスが必要ですが、取得したものは " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "エイリアスが前に見つかっています。" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "AS の後にエイリアスが必要です。" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." -msgstr "シンボル名が予期されていました。 カラム名は予約語を利用するときに、バッククォートでエスケープする必要があります。" +msgstr "" +"シンボル名が必要です。 予約語をバッククォートなしでカラム名として使用すること" +"はできません。" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "シンボル名があるべきです!" +msgstr "シンボル名が必要です!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "カンマか閉じる括弧があるべきです。" +msgstr "カンマか閉じ括弧が必要です。" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "閉じる括弧があるべきです。" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "認識できないデータ形式。" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -msgid "An alias was expected." -msgstr "エイリアスがあるべきです。" +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "式が必要です。" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "エイリアスが前に見つかっています。" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "エイリアスが必要です。" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "予期しないドット。" -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "式があるべきです。" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "予期しないトークン。" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "オフセットがあるべきです。" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "予期しない LOCK 式の終了。" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "このオプションは \"%1$s\" と競合しています。" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "テーブルの古い名前が必要です。" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "キーワード \"TO\" があるべきです。" +msgstr "キーワード \"TO\" が必要です。" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "テーブルの新しい名前が必要です。" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "リネーム操作が必要です。" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "式がありません。" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "予期しない文字。" +msgstr "予期しない文字です。" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "空白が区切り文字の前にあるべきです。" +msgstr "区切り文字の前に空白が必要です。" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "区切り文字があるべきです。" +msgstr "区切り文字が必要です。" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." -msgstr "終端クォート %1$s があるべきです。" +msgstr "終端クォート %1$s が必要です。" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "変数名があるべきです。" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "ステートメントの開始があるべきです。" +msgstr "ここで文を始めることができません。" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "認識されないステートメント形式。" +msgstr "認識されないステートメント形式です。" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "開始されているトランザクションはありません。" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "予期しないトークン。" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "この句種類は既に処理しました。" +msgstr "この種類の句は以前に解釈済みです。" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "認識できないキーワードです。" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "ステートメントの末尾にキーワードがあります。" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "予期しない節の順序。" +msgstr "予期しない節の順序です。" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "エンティティの名前が予想されていました。" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "テーブル名があるべきです。" +msgstr "テーブル名が必要です。" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "少なくとも 1 つのカラム定義が必要です。" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." -msgstr "キーワード \"RETURNS\" があるべきです。" +msgstr "キーワード \"RETURNS\" が必要です。" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "この句の種類は、複数テーブルクエリでは無効です。" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "エラー #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK ステートメントが予期せず終了しました。" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "予期しないキーワード" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "CTE の名前が必要です。" + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "キーワード AS が必要です。" + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "CTE のサブクエリが必要です。" + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "WITH CTE が予期せず終了しました。" + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "予期しない LOCK 式の終了。" + +#~ msgid "error #1" +#~ msgstr "エラー #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "厳格なエラー" +#~ msgid "strict error" +#~ msgstr "厳格なエラー" diff --git a/locale/ka/LC_MESSAGES/sqlparser.mo b/locale/ka/LC_MESSAGES/sqlparser.mo index 67b95eadb..4929a4f8a 100644 Binary files a/locale/ka/LC_MESSAGES/sqlparser.mo and b/locale/ka/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ka/LC_MESSAGES/sqlparser.po b/locale/ka/LC_MESSAGES/sqlparser.po index 37959e60a..0233bd64c 100644 --- a/locale/ka/LC_MESSAGES/sqlparser.po +++ b/locale/ka/LC_MESSAGES/sqlparser.po @@ -1,30 +1,34 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:03+0200\n" -"Last-Translator: Michal Čihař \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-04-16 13:48+0000\n" +"Last-Translator: Temuri Doghonadze \n" "Language-Team: Georgian \n" +"sql-parser/ka/>\n" "Language: ka\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 4.17-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -33,210 +37,239 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "" +msgstr "მოულოდნელი საკვანძო სიტყვა." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "AS-ის შემდეგ მეტსახელს მოველოდი." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "Remove selected users" +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Remove selected users" +msgstr "მოველოდი სიმბოლოს სახელს!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "Remove selected users" +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Remove selected users" +msgstr "მოველოდი მძიმეს ან დამხურავ ფრჩხილს." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -#, fuzzy -#| msgid "Remove selected users" -msgid "An alias was expected." -msgstr "Remove selected users" +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "მოველოდი გამოსახულებას." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "მოველოდი მეტსახელს." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "Remove selected users" -msgid "An expression was expected." -msgstr "Remove selected users" +msgstr "მოულოდნელი წერტილი." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "მოულოდნელი კოდი." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK გამოსახულების მოულოდნელი დასასრული." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "სტრიქონი წაიშალა" +msgstr "მოველოდი გადარქმევის ოპერატორს." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "as regular expression" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "რეგულარული გამოსახულება" +msgstr "ნაკლული გამოსახულება." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "" +msgstr "მოულოდნელი სიმბოლო." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "" +msgstr "მოსალოდნელი გამყოფი." -#: src/Lexer.php:843 -#, fuzzy, php-format -#| msgid "Table %1$s has been created." +#: src/Lexer.php:1004 +#, php-format msgid "Ending quote %1$s was expected." -msgstr "Table %1$s has been created." +msgstr "მოველოდი დამასრულებელ ბრჭყალს %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "" -#: src/Parser.php:423 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "ცხრილის დასაწყისში" +msgstr "გამოსახულების მოულოდნელი დასაწყისი." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." -msgstr "" +msgstr "უცნობი საკვანძო სიტყვა." -#: src/Statement.php:377 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "ცხრილის დასაწყისში" +msgstr "საკვანძო სიტყვა გამოსახულების ბოლოში." -#: src/Statement.php:503 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "ცხრილის დასაწყისში" +msgstr "წინადადებების მოულოდნელი მიმდევრობა." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 -#, fuzzy -#| msgid "Remove selected users" +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "Remove selected users" +msgstr "მოველოდი ცხრილის სახელს." -#: src/Statements/CreateStatement.php:438 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "სტრიქონი წაიშალა" +msgstr "მოველოდი სულ ცოტა ერთი სვეტის აღწერას." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK გამოსახულების მოულოდნელი დასასრული." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "მოველოდი CTE-ის სახელს." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "მოველოდი AS საკვანძო სიტყვას." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "მოველოდი CTE-ის ქვემოთხოვნას." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "WITH CTE-ის მოულოდნელი დასასრული." + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "ცხრილის დასაწყისში" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "შეცდომა" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "შეცდომა" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Ignore errors" -msgid "strict error" -msgstr "შეცდომების იგნორირება" +#~| msgid "Ignore errors" +#~ msgid "strict error" +#~ msgstr "შეცდომების იგნორირება" diff --git a/locale/kk/LC_MESSAGES/sqlparser.mo b/locale/kk/LC_MESSAGES/sqlparser.mo index 86d6c2e48..81bf2cc7d 100644 Binary files a/locale/kk/LC_MESSAGES/sqlparser.mo and b/locale/kk/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/kk/LC_MESSAGES/sqlparser.po b/locale/kk/LC_MESSAGES/sqlparser.po index 169c45dde..2c998f3d4 100644 --- a/locale/kk/LC_MESSAGES/sqlparser.po +++ b/locale/kk/LC_MESSAGES/sqlparser.po @@ -5,30 +5,35 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2019-04-01 19:04+0000\n" -"Last-Translator: WWWesten \n" -"Language-Team: Kazakh \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Kazakh \n" "Language: kk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.6-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Áli iske asyrylmady." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." -msgstr "Jańa nusqaý tabyldy, biraq onyń men aldyńǵy bireý arasynda bólgish joq." +msgstr "" +"Jańa nusqaý tabyldy, biraq onyń men aldyńǵy bireý arasynda bólgish joq." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Tanylmaǵan ózgertý áreketi." @@ -37,34 +42,57 @@ msgstr "Tanylmaǵan ózgertý áreketi." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d mánderi kútilgen, biraq %2$d tabyldy." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Ashýshy jaqsha, sodan keıin mánder jıyntyǵy kútilgen." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Ashýshy jaqsha kútilgen." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Kútpegen kilt sóz." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "CASE órneginiń kútpegen sońy" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE órneginiń kútpegen sońy" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Aldynda búrkenshik aty tabylǵan." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Búrkenshik aty kútilgen." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -72,150 +100,191 @@ msgstr "" "Tańba aty kútilgen! Saqtalǵan kilt sózdi doǵal ekpindersiz baǵan aty retinde " "paıdalanýǵa bolmaıdy." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Tańba aty kútilgen!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Útir nemese jabushy jaqsha kútilgen." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Jabushy jaqsha kútilgen." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tanylmaǵan derekter túri." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Órnek kútilgen." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Búrkenshik aty kútilgen." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Aldynda búrkenshik aty tabylǵan." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Kútpegen núkte." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Órnek kútilgen." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Kútpegen tańbalaýysh." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Yǵysý kútilgen." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK órneginiń kútpegen sońy." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Bul opsıa «%1$s» degenmen qaıshy keledi." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Kesteniń eski ataýy kútilgen." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "«TO» kilt sózi kútilgen." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Kesteniń jańa ataýy kútilgen." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Qaıta ataý áreketi kútilgen." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Órnek joq." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Kútpegen tańba." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Bólgishke deıin bosoryn(dar) kútilgen." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Bólgish kútilgen." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "«%1$s» jabýshy tyrnaqshasy kútilgen." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Aınymaly aty kútilgen." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Nusqaýdyń kútpegen bastalýy." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tanylmaǵan nusqaý túri." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Eshbir tranzaksıa aldynda bastalǵan joq." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Kútpegen tańbalaýysh." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Bul sóılemdiń túri aldynda taldandy." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Tanylmaǵan kilt sóz." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Nusqaý aıaǵynda kilt sóz." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Kútpegen sóılemder reti." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Nysan aty kútilgen." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Keste aty kútilgen." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Eń keminde bir baǵannyń anyqtamsy kútilgen." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "«RETURNS» kilt sózi kútilgen." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Birneshe keste saýaldarynda bul sóılem tyri jaramsyz." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "qate № 1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Nusqaýdyń kútpegen bastalýy." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Kútpegen kilt sóz" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Nysan aty kútilgen." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "«RETURNS» kilt sózi kútilgen." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Nysan aty kútilgen." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Nusqaýdyń kútpegen bastalýy." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "LOCK órneginiń kútpegen sońy." + +#~ msgid "error #1" +#~ msgstr "qate № 1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "qatań qate" +#~ msgid "strict error" +#~ msgstr "qatań qate" diff --git a/locale/km/LC_MESSAGES/sqlparser.mo b/locale/km/LC_MESSAGES/sqlparser.mo index 0701c8030..a3ddd7c25 100644 Binary files a/locale/km/LC_MESSAGES/sqlparser.mo and b/locale/km/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/km/LC_MESSAGES/sqlparser.po b/locale/km/LC_MESSAGES/sqlparser.po index d85ee8ec5..3217393c6 100644 --- a/locale/km/LC_MESSAGES/sqlparser.po +++ b/locale/km/LC_MESSAGES/sqlparser.po @@ -5,229 +5,290 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-08-12 15:08+0000\n" -"Last-Translator: ប៉ុកណូ រ៉ូយ៉ាល់ \n" -"Language-Team: Central Khmer \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2025-05-23 11:01+0000\n" +"Last-Translator: Chou Chamnan \n" +"Language-Team: Khmer (Central) \n" "Language: km\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.16\n" +"X-Generator: Weblate 5.12-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "មិនទាន់បានអនុវត្តទេ។" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 +#, fuzzy msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"សេចក្តីថ្លែងការណ៍ថ្មីមួយត្រូវបានរកឃើញ ប៉ុន្តែមិនមានការកំណត់ព្រំដែនរវាងវា " +"និងអត្ថបទមុនទេ។" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "បាត់សញ្ញាក្បៀស មុនពេលចាប់ផ្តើមប្រតិបត្តិការផ្លាស់ប្តូរថ្មី។" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "ប្រតិបត្តិការផ្លាស់ប្តូរមិនស្គាល់។" #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d តម្លៃត្រូវបានរំពឹងទុក ប៉ុន្តែបានរកឃើញ %2$d" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "តង្កៀបបើកដែលបន្តដោយសំណុំនៃតម្លៃត្រូវបានរំពឹងទុក។" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 +#, fuzzy msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "តង្កៀបបើកត្រូវបានរំពឹងទុក។" + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 +#, fuzzy msgid "Unexpected keyword." -msgstr "" +msgstr "ពាក្យគន្លឹះដែលមិនបានរំពឹងទុក។" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" +msgstr "ការបញ្ចប់នៃការបញ្ចេញមតិ CASE ដែលមិនបានរំពឹងទុក" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "ឈ្មោះក្លែងក្លាយស្ទួនសក្តានុពលនៃកន្សោម CASE ។" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "ឈ្មោះក្លែងក្លាយដែលរំពឹងទុកបន្ទាប់ពី AS ប៉ុន្តែទទួលបាន។ " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "No databases selected." msgid "A symbol name was expected!" msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 #, fuzzy #| msgid "No databases selected." -msgid "An alias was expected." +msgid "An expression was expected." msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No databases selected." -msgid "An expression was expected." -msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The bookmark has been deleted." msgid "A rename operation was expected." msgstr "បាន​លុប​ចំណាំ។" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "No databases selected." msgid "A table name was expected." msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The bookmark has been deleted." msgid "At least one column definition was expected." msgstr "បាន​លុប​ចំណាំ។" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "កំហុស​ #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "No databases selected." +msgid "The name of the CTE was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No databases selected." +msgid "AS keyword was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "No databases selected." +msgid "Subquery of the CTE was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "" + +#~ msgid "error #1" +#~ msgstr "កំហុស​ #1" diff --git a/locale/kmr/LC_MESSAGES/sqlparser.mo b/locale/kmr/LC_MESSAGES/sqlparser.mo new file mode 100644 index 000000000..493817154 Binary files /dev/null and b/locale/kmr/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/kmr/LC_MESSAGES/sqlparser.po b/locale/kmr/LC_MESSAGES/sqlparser.po new file mode 100644 index 000000000..a91dcbb74 --- /dev/null +++ b/locale/kmr/LC_MESSAGES/sqlparser.po @@ -0,0 +1,261 @@ +# phpMyAdmin SQL parser translation. +# Copyright (C) 2015 - 2020 phpMyAdmin devel team +# This file is distributed under the same license as the SQL parser package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: kmr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/Component.php:39 src/Component.php:59 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:415 src/Statement.php:359 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:88 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:108 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:192 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:255 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:268 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:300 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:403 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:78 src/Components/Limit.php:105 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/OptionsArray.php:146 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:103 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:109 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:124 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:140 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:274 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:313 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:329 src/Lexer.php:348 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:1004 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:1056 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:456 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:499 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:587 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:327 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:398 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:409 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:555 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:549 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:598 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:603 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:707 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:329 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "" + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "" + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "" + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "" diff --git a/locale/kn/LC_MESSAGES/sqlparser.mo b/locale/kn/LC_MESSAGES/sqlparser.mo index 6ff4ed998..a32760902 100644 Binary files a/locale/kn/LC_MESSAGES/sqlparser.mo and b/locale/kn/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/kn/LC_MESSAGES/sqlparser.po b/locale/kn/LC_MESSAGES/sqlparser.po index 620440af2..aff20361e 100644 --- a/locale/kn/LC_MESSAGES/sqlparser.po +++ b/locale/kn/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-07-24 13:05+0200\n" "Last-Translator: Shameem Ahmed A Mulla \n" "Language-Team: Kannada \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-11-21 05:02+0000\n" +"Last-Translator: Yong Kim \n" "Language-Team: Korean \n" "Language: ko\n" @@ -13,203 +13,258 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 5.2\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "아직 구현되지 않은 기능입니다." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "새로운 문장이 발견되었지만, 이전 문장과의 구분기호가 없습니다." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "새로운 ALTER 작업의 시작 앞에 쉼표가 빠졌습니다." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "인식되지 않은 ALTER 작업입니다." +msgstr "인식할 수 없는 ALTER 작업입니다." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "값 %1$d 이 예상되었지만, %2$d 가 발견되었습니다." +msgstr "값 %1$d이 필요하지만, %2$d 가 있습니다." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "일련의 값들에 의해 여는 괄호('(')가 예상됩니다." +msgstr "왼쪽 괄호 뒤에 여러 값들이 필요합니다." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "여는 괄호가 예상됩니다." - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "왼쪽 괄호가 필요합니다." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "예상되지 않은 키워드입니다." +msgstr "예기치 않은 키워드입니다." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "예상되지 않은 CASE 문의 종료" +msgstr "예기치 않은 CASE 문의 끝입니다" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE 문의 별칭이 중복되었을 수 있습니다." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "AS 다음에 별칭이 필요하지만, 다음 내용이 있습니다 " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "이미 사용 중인 별칭입니다." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "AS뒤에 별칭이 필요합니다." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." -msgstr "상징적인 이름이 예상되었습니다! 예약어는 큰 따옴표 없이 열 이름으로 사용될 수 없습니다." +msgstr "식별할 수 있는 이름이 필요합니다! 예약어는 역따옴표 없이 열 이름으로 사용될 " +"수 없습니다." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "심볼 이름이 예상되었습니다!" +msgstr "식별할 수 있는 이름이 필요합니다!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "쉼표 또는 닫는 괄호가 예상됩니다." +msgstr "쉼표 또는 닫는 대괄호가 필요합니다." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "닫는 괄호가 예상됩니다." +msgstr "닫는 괄호가 필요합니다." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "인식할 수 없는 데이터 형식입니다." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -msgid "An alias was expected." -msgstr "가명(별칭)이 예상됩니다." +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "식이 필요합니다." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "가명(별칭) 이전에 발견되었습니다." +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "별칭이 필요합니다." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "예상되지 않은 점(.)입니다." - -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "식이 예상되었습니다." +msgstr "예기치 못한 마침표(.)입니다." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "예기치 못한 토큰입니다." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "오프셋이 예상되었습니다." +msgstr "오프셋이 필요합니다." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "예기치 않은 LOCK 표현식 종료입니다." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "이 옵션은 \"%1$s\"와(과) 충돌합니다." +msgstr "이 옵션은 \"%1$s\" 옵션과 충돌합니다." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "테이블의 이전 이름이 예상되었습니다." +msgstr "테이블의 이전 이름이 필요합니다." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "키워드 \"TO\"가 예상되었습니다." +msgstr "\"TO\" 키워드가 필요합니다." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "테이블의 새로운 이름이 예상되었습니다." +msgstr "테이블의 새로운 이름이 필요합니다." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "이름 바꾸기 작업이 예상되었습니다." +msgstr "이름 바꾸기 작업이 필요합니다." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "누락된 표현입니다." +msgstr "구문이 없습니다." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "예상치 못한 문자입니다." +msgstr "예기치 않은 문자입니다." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "구분기호 앞에 공백이 필요합니다." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "구분기호가 필요합니다." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." -msgstr "종료 견적 %1$s 가 예상됩니다." +msgstr "닫는 따옴표 %1$s 가 필요합니다." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "변수명이 필요합니다." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "예상치 못한 명령문의 시작입니다." +msgstr "예기치 않은 구문 시작합니다." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "인식할 수 없는 명령문 유형입니다." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "이전에 시작된 처리가 없습니다." +msgstr "이전에 시작한 트랜잭션이 없습니다." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "예상치 못한 표현(토큰)입니다." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "이 유형의 절은 이전에 구문 분석되었습니다." +msgstr "이 유형의 절은 이미 파싱되었습니다." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "인식할 수 없는 키워드입니다." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "명령문 끝에 있는 키워드." +msgstr "구문의 끝에 있는 키워드입니다." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "예기치 못한 문장(절) 순서." +msgstr "예기치 않은 절의 순서입니다." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "개체의 이름으로 예상됩니다." +msgstr "개체 이름이 필요합니다." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "테이블 이름으로 예상됩니다." +msgstr "테이블 이름이 필요합니다." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "최소한 하나의 열 정의가 예상됩니다." +msgstr "최소한 하나의 열은 정의해야합니다." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "\"RETURNS\"키워드가 필요합니다." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "이 유형의 문장(절)은 다중테이블 쿼리에서 유효하지 않습니다." +msgstr "다중테이블 요청에서 이 유형의 절은 유효하지 않습니다." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "예기치 않은 LOCK 구문의 끝입니다." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "예기치 않은 키워드" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "CTE의 이름이 필요합니다." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "AS 키워드가 필요합니다." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "CTE의 서브쿼리가 필요합니다." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "예기치 않은 WITH CTE의 끝입니다." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "LOCK 표현식이 예기치 않게 끝났습니다." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "오류 #1" +#~ msgid "error #1" +#~ msgstr "오류 #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "엄격한 오류" +#~ msgid "strict error" +#~ msgstr "엄격한 오류" diff --git a/locale/ksh/LC_MESSAGES/sqlparser.mo b/locale/ksh/LC_MESSAGES/sqlparser.mo index 3d6d13130..ed9b5602a 100644 Binary files a/locale/ksh/LC_MESSAGES/sqlparser.mo and b/locale/ksh/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ksh/LC_MESSAGES/sqlparser.po b/locale/ksh/LC_MESSAGES/sqlparser.po index ed45fff5a..c7dbc39a9 100644 --- a/locale/ksh/LC_MESSAGES/sqlparser.po +++ b/locale/ksh/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2014-10-02 15:09+0200\n" "Last-Translator: Purodha \n" "Language-Team: Colognian \n" "Language-Team: Kyrgyz \n" "Language-Team: Limburgish , 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:20+0200\n" -"Last-Translator: Michal Čihař \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2022-07-05 15:20+0000\n" +"Last-Translator: Ugnius Vaičeskas \n" "Language-Team: Lithuanian \n" +"sql-parser/lt/>\n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" -"%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.5-dev\n" +"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > " +"19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? " +"1 : 2);\n" +"X-Generator: Weblate 4.13.1-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "Vis dar neįgyvendinta." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 #, fuzzy #| msgid "Iconic table operations" msgid "Unrecognized alter operation." @@ -36,218 +41,280 @@ msgstr "Piktograminės lentelių operacijos" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "Tikimasi atidaromojo skliausto." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nepažymėjote duomenų bazės." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "Table name template" +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Lentelės vardo šablonas" +msgstr "Buvo tikimasi simbolio pavadinimo!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No databases selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Nepažymėjote duomenų bazės." +msgstr "Tikimasi kablelio arba uždaromojo skliausto." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "Tikimasi uždaromojo skliausto." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "Neatpažintas duomenų tipas." + +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Nepasirinkti įrašai" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "Nepažymėjote duomenų bazės." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." +msgstr "Nepageidautinas taškas." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Nepasirinkti įrašai" - -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Lentelės pradžioje" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." msgstr "Lentelių kurios yra atidarytos skaičius." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 #, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." msgstr "Lentelių kurios yra atidarytos skaičius." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "Eilutė buvo ištrinta" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "kaip reguliarųjį išsireiškimą" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Event %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "Įvykis %1$s buvo sukurtas." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "Lentelės vardo šablonas" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "Lentelės pradžioje" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "Lentelės pradžioje" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "Lentelės pradžioje" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "Lentelių kurios yra atidarytos skaičius." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "Lentelės vardo šablonas" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Eilutė buvo ištrinta" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Lentelės pradžioje" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "Lentelių kurios yra atidarytos skaičius." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "Nepasirinkti įrašai" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "Lentelių kurios yra atidarytos skaičius." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "Lentelės pradžioje" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Lentelės pradžioje" + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "klaidos." +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "klaidos." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Rinkti klaidas" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Rinkti klaidas" diff --git a/locale/lv/LC_MESSAGES/sqlparser.mo b/locale/lv/LC_MESSAGES/sqlparser.mo index f28872774..2ec71751b 100644 Binary files a/locale/lv/LC_MESSAGES/sqlparser.mo and b/locale/lv/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/lv/LC_MESSAGES/sqlparser.po b/locale/lv/LC_MESSAGES/sqlparser.po index 29ce6aa02..d6bc32ba1 100644 --- a/locale/lv/LC_MESSAGES/sqlparser.po +++ b/locale/lv/LC_MESSAGES/sqlparser.po @@ -1,240 +1,304 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2016-01-23 11:11+0000\n" -"Last-Translator: Arturs Nikolajevs \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2025-03-12 13:20+0000\n" +"Last-Translator: \"ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)\" \n" "Language-Team: Latvian \n" +"sql-parser/lv/>\n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 5.10.3-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 +#, fuzzy msgid "Not implemented yet." -msgstr "" +msgstr "Vēl nav īstenots (uzkodēts)." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 +#, fuzzy msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"Tika atrasta jauna instrukcija (nosacījums), bet nebija atdalītāja starp " +"viņu un iepriekšējo." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Trūkst komata pirms jaunas izmaiņas (ALTER) darbības sākšanas." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "Neatpazīta izmaiņu (ALTER) darbība." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "Sagaidīja %1$d vērtības, bet atrada %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "Sagaidīja atverošo iekavu, pēc kuras seko vērtību kopums." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "Sagaidīja atverošo iekavu." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "" +msgstr "Negaidīts atslēgvārds." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 +#, fuzzy msgid "Unexpected end of CASE expression" +msgstr "Negaidītas CASE izteiksmes (funkcijas) beigas" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Sagaidīja aizstājvārdu pēc AS, bet saņemts " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Sagaidīja aizstājvārdu pēc AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy msgid "A symbol name was expected!" msgstr "Faila nosaukuma šablons" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No databases selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Datubāze nav izvēlēta." +msgstr "Sagaidīja komatu vai aizverošo iekavu." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "Sagaidīja aizverošo iekavu." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "Neatpazīts datu tips." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 #, fuzzy -#| msgid "No databases selected." -msgid "An alias was expected." -msgstr "Datubāze nav izvēlēta." +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Sagaidīja izteiksmi." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "Sagaidīja aizstājvārdu." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 +msgstr "Negaidīts punkts." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 #, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Rindas nav iezīmētas" +msgid "Unexpected token." +msgstr "Negaidīta marķiera zīme." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "" +msgstr "Sagaidīja nobīdi." + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Tabulas sākumā" -#: src/Components/OptionsArray.php:143 +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "Šis parametrs konfliktē ar \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "" +msgstr "Sagaidīja sākotnējās (vecās) tabulas nosaukumu." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "Sagaidīja \"TO\" atslēgvārdu." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "" +msgstr "Sagaidīja jaunās tabulas nosaukumu." -#: src/Components/RenameOperation.php:153 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "Ieraksts tika dzēsts" +msgstr "Sagaidīja pārdēvēšanas operāciju." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "as regular expression" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "kā regulārā izteiksme" +msgstr "Trūkst izteiksmes." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "" +msgstr "Negaidīta rakstzīme." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format msgid "Ending quote %1$s was expected." msgstr "Tabula %s tika izdzēsta" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy msgid "Variable name was expected." msgstr "Faila nosaukuma šablons" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "Tabulas sākumā" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "Tabulas sākumā" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "Tabulas sākumā" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy msgid "A table name was expected." msgstr "Faila nosaukuma šablons" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Ieraksts tika dzēsts" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Tabulas sākumā" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +msgid "The name of the CTE was expected." +msgstr "Faila nosaukuma šablons" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "Rindas nav iezīmētas" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +msgid "Subquery of the CTE was expected." +msgstr "Tabula %s tika izdzēsta" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "Tabulas sākumā" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Tabulas sākumā" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "Kļūda" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Kļūda" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query type" -msgid "strict error" -msgstr "Vaicājuma tips" +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Vaicājuma tips" diff --git a/locale/mk/LC_MESSAGES/sqlparser.mo b/locale/mk/LC_MESSAGES/sqlparser.mo index e62222922..45efb210b 100644 Binary files a/locale/mk/LC_MESSAGES/sqlparser.mo and b/locale/mk/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/mk/LC_MESSAGES/sqlparser.po b/locale/mk/LC_MESSAGES/sqlparser.po index a25a31b89..0b7bfe082 100644 --- a/locale/mk/LC_MESSAGES/sqlparser.po +++ b/locale/mk/LC_MESSAGES/sqlparser.po @@ -1,240 +1,275 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:23+0200\n" -"Last-Translator: Michal Čihař \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-12-26 22:01+0000\n" +"Last-Translator: \"Kristijan \\\"Fremen\\\" Velkovski\" \n" "Language-Team: Macedonian \n" +"sql-parser/mk/>\n" "Language: mk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 5.4-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "Сеуште не е имплементирано." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." -msgstr "" +msgstr "Пронајдена е нова изјава, но нема разграница меѓу неа и претходната." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Недостига запирка пред почетокот на новата alter операција." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "Непозната промена(alter) operacija." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d вредности беа очекувани, но беа најдени %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "Се очекуваше отворена заграда следејќи со сет на вредности." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "Се очекуваше отворена заграда." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "" +msgstr "Неочекуван клучен збор." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "" +msgstr "Неочекуван крај на CASE израз" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Потенцијален дупликат алиас на CASE израз." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Се очекуваше алиас после AS, но се доби " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Алиас беше претходно најден." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Алијас беше очекуван после AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" +"Се очекуваше име на симбол! Резервиран клучен збор не може да се користи " +"како име на колона без задни наводници." -#: src/Components/CreateDefinition.php:237 -#, fuzzy +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Шаблон на име на податотека" +msgstr "Име на симбол беше очекуван!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No databases selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Не е избрана ни една база на податоци." +msgstr "Запирка или затворачка заграда беше очекувана." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "Се очекуваше заграда за затворање." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "Непрепознаен тип на податоци." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -#, fuzzy -#| msgid "No databases selected." -msgid "An alias was expected." -msgstr "Не е избрана ни една база на податоци." +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Израз се очекуваше." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "Алијас беше очекуван." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Нема селектирани записи" +msgstr "Неочекувана точка." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Неочекуван токен." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "" +msgstr "Се очекуваше офсет." + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Неочекуван крај на LOCK изразот." -#: src/Components/OptionsArray.php:143 +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "Оваа опција е во конфликт со \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "" +msgstr "Се очекуваше старото име на табелата." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "Се очекуваше клучниот збор \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "" +msgstr "Новото име на табелата беше очекувано." -#: src/Components/RenameOperation.php:153 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "Записот е избришан" +msgstr "Операција за преименување беше очекувана." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "as regular expression" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "како регуларен израз" +msgstr "Недостига израз." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "" +msgstr "Неочекуван карактер." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "Беа очекувани празни места пред разграничувач." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "" +msgstr "Беше очекуван разграничувач." -#: src/Lexer.php:843 -#, fuzzy, php-format +#: src/Lexer.php:1004 +#, php-format msgid "Ending quote %1$s was expected." -msgstr "Табелата %s е избришана" +msgstr "Затварање на цитатот %1$s беше очекуван." -#: src/Lexer.php:884 -#, fuzzy +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "Шаблон на име на податотека" +msgstr "Беше очекувано име на варијабила." -#: src/Parser.php:423 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "на почетокот од табелата" +msgstr "Неочекуван почеток на изјавата." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "" +msgstr "Непознат тип на израз." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" - -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" +msgstr "Нема трансакција која била почната порано." -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "Овој тип на клаузула беше претходно парсирана." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." -msgstr "" +msgstr "Непрепознаен клучен збор." -#: src/Statement.php:377 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "на почетокот од табелата" +msgstr "Клучен збор на крај на изјава." -#: src/Statement.php:503 -#, fuzzy -#| msgid "At Beginning of Table" +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "на почетокот од табелата" +msgstr "Неочекувана подредба на клаузи." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "" +msgstr "Беше очекувано името на субјектот." -#: src/Statements/CreateStatement.php:430 -#, fuzzy +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "Шаблон на име на податотека" +msgstr "Беше очекувано име на табела." -#: src/Statements/CreateStatement.php:438 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "Записот е избришан" +msgstr "Беше очекувана барем една дефиниција за колона." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "Беше очекуван клучниот збор \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "" +msgstr "Овој тип на клауза не е валидна во мулти-табелно барање." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Неочекуван крај на LOCK изразот." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Неочекуван клучен збор" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Бече очекувано име на CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Беше очекуван клучниот збор AS." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Беше очекувано подбарањето на CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Неочекуван крај на WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Неочекуван крај на Lock изразот." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "Грешка" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Грешка" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query type" -msgid "strict error" -msgstr "Вид на упит" +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Вид на упит" diff --git a/locale/ml/LC_MESSAGES/sqlparser.mo b/locale/ml/LC_MESSAGES/sqlparser.mo index 5fb194ecf..6efabe8b5 100644 Binary files a/locale/ml/LC_MESSAGES/sqlparser.mo and b/locale/ml/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ml/LC_MESSAGES/sqlparser.po b/locale/ml/LC_MESSAGES/sqlparser.po index d118597a2..d19456c42 100644 --- a/locale/ml/LC_MESSAGES/sqlparser.po +++ b/locale/ml/LC_MESSAGES/sqlparser.po @@ -3,229 +3,291 @@ # This file is distributed under the same license as the phpMyAdmin package. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:05+0200\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: Malayalam \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Malayalam \n" "Language: ml\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "ഇതുവരെ നടപ്പാക്കിയിട്ടില്ല." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"ഒരു പുതിയ പ്രസ്താവന കണ്ടെത്തി, പക്ഷേ അതിനും മുമ്പത്തെ പ്രസ്താവനയ്ക്കും ഇടയിൽ അതിര്‍ത്തി ഇല്ല." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "ഒരു പുതിയ പരിവര്‍ത്തരം ആരംഭിക്കുന്നതിന് മുമ്പ് ഉദ്ധരണി സൂചകമായ ചിഹ്നം കാണുന്നില്ല." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "തിരിച്ചറിയാത്ത വ്യത്യാസപ്പെടുത്തല്‍." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d മൂല്യങ്ങൾ പ്രതീക്ഷിച്ചെങ്കിലും കണ്ടെത്തി %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 +#, fuzzy msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "ഒരു ഓപ്പണിംഗ് ബ്രാക്കറ്റിന് ശേഷം ഒരു കൂട്ടം മൂല്യങ്ങൾ പ്രതീക്ഷിച്ചു." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "ഒരു ഓപ്പണിംഗ് ബ്രായ്ക്കറ്റ് പ്രതീക്ഷിച്ചു." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "" +msgstr "അപ്രതീക്ഷിത സൂചകപദം." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "" +msgstr "CASE പ്രയോഗശൈലിയുടെ അപ്രതീക്ഷിത അവസാനം" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE പ്രയോഗശൈലിയുടെ തനിപ്പകർപ്പ് അപരനാമം." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "ASന് ശേഷം പ്രതീക്ഷിച്ച ഒരു അപരനാമം ലഭിച്ചു " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "ഒരു അപരനാമം മുമ്പ് കണ്ടെത്തി." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "ASന് ശേഷം ഒരു അപരനാമം പ്രതീക്ഷിച്ചിരുന്നു." + +#: src/Components/CreateDefinition.php:255 +#, fuzzy msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" +"ഒരു ചിഹ്ന നാമം പ്രതീക്ഷിച്ചു! ബാക്ക് ഉദ്ധരണികൾ ഇല്ലാതെ ഒരു റിസർവ്ഡ് കീവേഡ്, നിരയുടെ പേരായി " +"ഉപയോഗിക്കാൻ കഴിയില്ല." -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "Remove database" +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "വിവരശേഖരം നീക്കുക" +msgstr "ഒരു ചിഹ്ന നാമം പ്രതീക്ഷിച്ചു!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "Remove database" msgid "A comma or a closing bracket was expected." -msgstr "വിവരശേഖരം നീക്കുക" +msgstr "വിവരശേഖരം നീക്കുക." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 +#, fuzzy msgid "A closing bracket was expected." -msgstr "" +msgstr "ഒരു അടക്കല്‍ ബ്രാക്കറ്റ് പ്രതീക്ഷിച്ചു." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "തിരിച്ചറിയാത്ത ഡാറ്റ തരം." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 #, fuzzy #| msgid "Remove database" -msgid "An alias was expected." +msgid "An expression was expected." msgstr "വിവരശേഖരം നീക്കുക" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +#, fuzzy +#| msgid "Remove database" +msgid "An alias was expected." +msgstr "വിവരശേഖരം നീക്കുക." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" +msgstr "അപ്രതീക്ഷിത കുത്ത്‌." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "അപ്രതീക്ഷിത അടയാളം." -#: src/Components/ExpressionArray.php:102 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 #, fuzzy -#| msgid "Remove database" -msgid "An expression was expected." -msgstr "വിവരശേഖരം നീക്കുക" - -#: src/Components/Limit.php:86 src/Components/Limit.php:108 msgid "An offset was expected." -msgstr "" +msgstr "ഒരു ഓഫ്‌സെറ്റ് പ്രതീക്ഷിച്ചു." + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK പ്രയോഗശൈലിയുടെ അപ്രതീക്ഷിത അവസാനം." -#: src/Components/OptionsArray.php:143 +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "ഈ \"%1$s\"തിരഞ്ഞെടുക്കല്‍ പൊരുത്തപ്പെടുന്നില്ല." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "" +msgstr "പട്ടികയുടെ പഴയ പേര് പ്രതീക്ഷിച്ചു." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "\"TO\" സൂചകപദം പ്രതീക്ഷിച്ചു." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "" +msgstr "പട്ടികയുടെ പുതിയ പേര് പ്രതീക്ഷിച്ചു." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "Database %1$s has been created." msgid "A rename operation was expected." msgstr "വിവരശേഖരം(ങ്ങൾ) %1$s സൃഷ്ടിച്ചിരിക്കുന്നു." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "" +msgstr "പദപ്രയോഗം നഷ്‌ടമായി." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "" +msgstr "അപ്രതീക്ഷിത പ്രതീകം." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "അതിരുകൾക് മുൻപ് പ്രതീക്ഷിച്ച വിടവുകൾ." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "" +msgstr "പ്രതീക്ഷിച്ച അതിര്‍ത്തി." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." -msgstr "" +msgstr "%1$s ഉദ്ധരണി അവസാനിക്കുന്നു." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "" +msgstr "പരിവര്‍ത്തിതവസ്‌തുവിന്റെ പേര് പ്രതീക്ഷിച്ചു." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "" +msgstr "പ്രസ്താവനയുടെ അപ്രതീക്ഷിത തുടക്കം." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "" +msgstr "തിരിച്ചറിയാത്ത പ്രസ്താവന തരം." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" - -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" +msgstr "ഒരു ഇടപാടും മുമ്പ് ആരംഭിച്ചിട്ടില്ല." -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "ഇത്തരത്തിലുള്ള ഉടമ്പടി മുമ്പ് വ്യാകരിച്ചു." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." -msgstr "" +msgstr "തിരിച്ചറിയാത്ത സൂചകപദം." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "" +msgstr "പ്രസ്താവനയുടെ അവസാനം സൂചകപദം." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "" +msgstr "ഉപവാക്യങ്ങളുടെ അപ്രതീക്ഷിത ക്രമം." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "" +msgstr "വസ്‌തുവിന്റെ പേര് പ്രതീക്ഷിച്ചു." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Remove database" msgid "A table name was expected." msgstr "വിവരശേഖരം നീക്കുക" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "Database %1$s has been created." msgid "At least one column definition was expected." msgstr "വിവരശേഖരം(ങ്ങൾ) %1$s സൃഷ്ടിച്ചിരിക്കുന്നു." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "ഒരു \"റിട്ടേൺസ്\" സൂചകപദം പ്രതീക്ഷിച്ചു." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "" +msgstr "മൾട്ടി-ടേബിൾ അന്വേഷണങ്ങളിൽ ഇത്തരത്തിലുള്ള ഉപവാക്യം സാധുവല്ല." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK പ്രസ്‌താവനയുടെ അപ്രതീക്ഷിത അവസാനം." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "" +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "അപ്രതീക്ഷിത സൂചകപദം" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "വസ്‌തുവിന്റെ പേര് പ്രതീക്ഷിച്ചു." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "ഒരു \"റിട്ടേൺസ്\" സൂചകപദം പ്രതീക്ഷിച്ചു." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "വസ്‌തുവിന്റെ പേര് പ്രതീക്ഷിച്ചു." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected end of LOCK statement." +msgid "Unexpected end of the WITH CTE." +msgstr "LOCK പ്രസ്‌താവനയുടെ അപ്രതീക്ഷിത അവസാനം." + +#, fuzzy +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "LOCK പ്രയോഗശൈലിയുടെ അപ്രതീക്ഷിത അവസാനം." diff --git a/locale/mn/LC_MESSAGES/sqlparser.mo b/locale/mn/LC_MESSAGES/sqlparser.mo index d38bdc112..58aef4cbd 100644 Binary files a/locale/mn/LC_MESSAGES/sqlparser.mo and b/locale/mn/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/mn/LC_MESSAGES/sqlparser.po b/locale/mn/LC_MESSAGES/sqlparser.po index 3174f105f..a1d37d2bc 100644 --- a/locale/mn/LC_MESSAGES/sqlparser.po +++ b/locale/mn/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2017-05-29 07:42+0000\n" "Last-Translator: Sambuu-Yondon \n" "Language-Team: Mongolian \n" "Language-Team: Malay , 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2019-08-18 18:22+0000\n" -"Last-Translator: Allan Nordhøy \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2020-06-24 17:41+0000\n" +"Last-Translator: Sebastian \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -13,19 +13,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.8\n" +"X-Generator: Weblate 4.2-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ikke implementert ennå." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "En ny uttalelse ble funnet, men ingen skilletegn mellom det og den forrige." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Mangler komma før starten av ny endringsoperasjon." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Ukjent endringsoperasjon." @@ -34,185 +38,243 @@ msgstr "Ukjent endringsoperasjon." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d verdier var forventet, men fant %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "Åpeningsklamme etterfulgt av ett sett verdier forventet." +msgstr "Åpningsklamme etterfulgt av et sett verdier forventet." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Åpningsklamme forventet." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Uventede karakterer på linje %sd." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Uventet slutt av CASE-uttrykket" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Mulig duplisert alias av CASE-uttrykk." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Forventet et alias etter AS, men ble gitt " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Et alias ble tidligere funnet." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Et alias var forventet etter AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -"Et symbol navn var forventet! Et forbeholdt nøkkelord kan ikke bli brukt som " -"et kolonnenavn uten tilbakesitater." +"Forventet et symbolnavn! Reserverte nøkkelord kan bare bli brukt som " +"kolonnenavn ved å sette gravistegn (`) før og etter navnet." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Symbolnavn forventet!" +msgstr "Forventet et symbolnavn!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "Komma eller lukkingsklamme forventet." +msgstr "Forventet et komma eller en lukkingsklamme." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "En sluttende brakett var forventet." +msgstr "Forventet en lukkingsklamme." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Ukjent datatype." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Uttrykk forventet." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Alias forventet." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Et alias ble tidligere funnet." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Uventet dott." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Uttrykk forventet." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Uventet tegn." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "En forskyvning var forventet." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Uventet slutt av LOCK-uttrykket." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Denne operasjonen konflikter med \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Forventet gammelt tabellnavn." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Søkeordet \"TIL\" var forventet." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Forventet nytt tabellnavn." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "En navneenringsoperasjon var forventet." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Manglende uttrykk." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Uventet tegn." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Forventet blanktegn før skilletegn." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Forventet avgrensning." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Sluttsitat %1$s forventet." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Variabelnavn forventet." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Uventet begynnelse på uttykket." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Ukjent setningstype." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Ingen transaksjon ble tidligere startet." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Uventet tegn." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Denne typen klausul ble tidligere analysert." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Ukjent nøkkelord." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Nøkkelord ved slutten av uttalelsen." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Uventet klausulrekkefølge." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Enhetsnavn forventet." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Tabellnavn forventet." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Minst én kolonnedefinisjon forventet." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Et \"RETURNS\" søkeord ble forventet." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Denne typen klausul er ikke gyldig i Multi-tabell-spørringer." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "feil #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Uventet slutt på LOCK-uttrykket." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Uventet nøkkelord" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Enhetsnavn forventet." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "Et \"RETURNS\" søkeord ble forventet." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Enhetsnavn forventet." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected end of LOCK statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Uventet slutt på LOCK-uttrykket." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Uventet slutt av LOCK-uttrykket." + +#~ msgid "error #1" +#~ msgstr "feil #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "streng feil" +#~ msgid "strict error" +#~ msgstr "streng feil" diff --git a/locale/ne/LC_MESSAGES/sqlparser.mo b/locale/ne/LC_MESSAGES/sqlparser.mo index fae4322c4..d7d5493a0 100644 Binary files a/locale/ne/LC_MESSAGES/sqlparser.mo and b/locale/ne/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ne/LC_MESSAGES/sqlparser.po b/locale/ne/LC_MESSAGES/sqlparser.po index 638268e18..095f3eac7 100644 --- a/locale/ne/LC_MESSAGES/sqlparser.po +++ b/locale/ne/LC_MESSAGES/sqlparser.po @@ -5,30 +5,34 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:03+0200\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: Nepali \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2025-06-22 06:47+0000\n" +"Last-Translator: Rupak Sapkota \n" +"Language-Team: Nepali \n" "Language: ne\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 5.13-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "अहिलेसम्म तयार छैन |" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -37,185 +41,234 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected after AS." +msgstr "कुनैपनि डेटाबेस चयन गरिएको छैन।" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -msgid "An alias was expected." +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." msgstr "" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." msgstr "" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "No tables selected." msgid "A table name was expected." msgstr "कुनैपनि डेटाबेस चयन गरिएको छैन।" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" msgstr "" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "No tables selected." +msgid "The name of the CTE was expected." +msgstr "कुनैपनि डेटाबेस चयन गरिएको छैन।" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No tables selected." +msgid "AS keyword was expected." +msgstr "कुनैपनि डेटाबेस चयन गरिएको छैन।" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "No tables selected." +msgid "Subquery of the CTE was expected." +msgstr "कुनैपनि डेटाबेस चयन गरिएको छैन।" + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." msgstr "" diff --git a/locale/nl/LC_MESSAGES/sqlparser.mo b/locale/nl/LC_MESSAGES/sqlparser.mo index b002cfd7f..612d0a1be 100644 Binary files a/locale/nl/LC_MESSAGES/sqlparser.mo and b/locale/nl/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/nl/LC_MESSAGES/sqlparser.po b/locale/nl/LC_MESSAGES/sqlparser.po index a07819285..8f7aa7467 100644 --- a/locale/nl/LC_MESSAGES/sqlparser.po +++ b/locale/nl/LC_MESSAGES/sqlparser.po @@ -1,11 +1,11 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-09-05 10:46+0000\n" -"Last-Translator: Steven WdV \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -13,20 +13,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Nog niet geïmplementeerd." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Een nieuwe opdracht werd gevonden, maar zonder scheidingsteken tussen deze " "en de vorige opdracht." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Ontbrekende komma voor de start van een wijzigingsbewerking." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Onbekende bewerking." @@ -35,34 +39,53 @@ msgstr "Onbekende bewerking." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d waarden werden verwacht, maar %2$d gevonden." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Een openingshaakje gevolgd door een set met waardes werd verwacht." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Een openingshaakje werd verwacht." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Onverwacht sleutelwoord." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Onverwacht einde van CASE expressie" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potentiële dubbele alias van CASE expressie." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Een alias werd verwacht na AS maar kreeg " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Een alias was eerder al gevonden." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Een alias werd verwacht na AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +93,181 @@ msgstr "" "Een symbool naam werd verwacht! Een gereserveerd sleutelwoord kan niet als " "kolomnaam gebruikt worden zonder achterwaartse aanhalingstekens." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Een symbool naam werd verwacht!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Een komma of een sluitingshaakje werd verwacht." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Een sluitingshaakje werd verwacht." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Onbekend gegevenstype." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Een expressie werd verwacht." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Een alias werd verwacht." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Een alias was eerder al gevonden." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Onverwachte punt." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Een expressie werd verwacht." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Onverwacht token." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Een offset werd verwacht." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Onverwacht einde van LOCK expressie." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Deze optie conflicteert met \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "De oude naam van de tabel werd verwacht." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Sleutelwoord \"TO\" werd verwacht." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "De nieuwe naam van de tabel werd verwacht." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Een hernoem bewerking werd verwacht." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Expressie ontbreekt." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Onverwachte letter." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Spatie(s) werd(en) verwacht voor het scheidingsteken." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Scheidingsteken verwacht." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Eindquote %1$s werd verwacht." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "Naam van variabele werd verwacht." +msgstr "Naam van variabele werd verwacht." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Onverwacht begin van opdracht." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Opdrachttype niet herkend." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Er is geen transactie gestart." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Onverwacht token." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Dit type van voorwaarde is eerder uitgevoerd." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Sleutelwoord niet herkend." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Sleutelwoord aan eind van opdracht." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Onverwachte volgorde van voorwaarden." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "De naam van de entiteit werd verwacht." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "Een tabel naam werd verwacht." +msgstr "Een tabel naam werd verwacht." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Er werd minimaal één kolomdefinitie verwacht." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Een \"RETURNS\" sleutelwoord werd verwacht." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Dit type van voorwaarde is niet bruikbaar in multi-tabel queries." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "fout #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Onverwacht einde van LOCK opdracht." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Onverwacht sleutelwoord" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "De naam van de CTE werd verwacht." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Het AS sleutelwoord werd verwacht." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Subquery van de CTE werd verwacht." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Onverwacht einde van WITH CTE opdracht." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Onverwacht einde van LOCK expressie." + +#~ msgid "error #1" +#~ msgstr "fout #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "strikte fout" +#~ msgid "strict error" +#~ msgstr "strikte fout" diff --git a/locale/pa/LC_MESSAGES/sqlparser.mo b/locale/pa/LC_MESSAGES/sqlparser.mo index dfa427042..9a08ff3db 100644 Binary files a/locale/pa/LC_MESSAGES/sqlparser.mo and b/locale/pa/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/pa/LC_MESSAGES/sqlparser.po b/locale/pa/LC_MESSAGES/sqlparser.po index d00907f8f..ceb3e7383 100644 --- a/locale/pa/LC_MESSAGES/sqlparser.po +++ b/locale/pa/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2014-01-06 12:13+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Punjabi , 2012. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-12-02 21:48+0000\n" -"Last-Translator: Kozioł Marcin \n" -"Language-Team: Polish \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-07-10 10:49+0000\n" +"Last-Translator: Szymon Burnejko \n" +"Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 5.0-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Jeszcze nie zaimplementowane." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "Znaleziono kolejne polecenie, ale brakuje między nimi rozgranicznika." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Brak przecinka przed rozpoczęciem nowej operacji zmiany." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Nierozpoznana zmiana operacji." @@ -34,34 +38,53 @@ msgstr "Nierozpoznana zmiana operacji." msgid "%1$d values were expected, but found %2$d." msgstr "Oczekiwano następującej wartości: %1$d; znaleziono %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Oczekiwano nawiasu otwierającego i listy wartości." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Brak nawiasu otwierającego." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Nieznane słowo kluczowe." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Nieoczekiwany koniec polecenia CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potencjalny zduplikowany alias wyrażenia CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Oczekiwano alias po AS, lecz otrzymano " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Wcześniej znaleziono alias." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Oczekiwano aliasu po AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -69,150 +92,181 @@ msgstr "" "Oczekiwano nazwy symbolu! Zarezerwowane słowo kluczowe nie może być używane " "jako nazwa kolumny bez cudzysłowów." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Oczekiwano nazwy symbolu!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Oczekiwano przecinka lub nawiasu zamykającego." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Brak nawiasu zamykającego." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Nierozpoznany typ danych." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Oczekiwano wyrażenia." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Oczekiwano aliasu." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Wcześniej znaleziono alias." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Nieoczekiwana kropka." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Oczekiwano wyrażenia." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Nieoczekiwany znak." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Oczekiwano przesunięcia." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Nieoczekiwany koniec wyrażenia LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Ta opcja zawiera konflikt z \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Oczekiwano starej nazwy tabeli." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Oczekiwano słowa kluczowego \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Oczekiwano nowej nazwy tabeli." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Oczekiwano polecenia zmiany nazwy." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Brakujace wyrazenie." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Nieoczekiwany znak." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Oczekiwano spacji przez rozgranicznikiem." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Oczekiwano rozgranicznika." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Oczekiwano znaku końca %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Oczekiwano nazwy zmiennej." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Oczekiwano początku polecenia." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Nierozpoznany typ polecenia." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Żadna transakcja nie została wcześniej uruchomiona." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Nieoczekiwany znak." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Tego typu klauzula została wcześniej przeanalizowana." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Nierozpoznane słowo kluczowe." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Słowo kluczowe na końcu wyciągu." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Nieoczekiwana kolejność klauzul." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Oczekiwano nazwy obiektu." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Oczekiwano nazwy tabeli." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Oczekiwano definicji co najmniej jednej kolumny." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Oczekiwano słowa kluczowego \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Ta klauzula nie może być stosowana w poleceniach międzytabelowych." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "Błąd #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Nieoczekiwane zakończenie instrukcji LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Nieznane słowo kluczowe" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Oczekiwano nazwy CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Oczekiwano słowa kluczowego \"AS\"." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Oczekiwano podzapytania CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Nieoczekiwany koniec WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Nieoczekiwany koniec wyrażenia LOCK." + +#~ msgid "error #1" +#~ msgstr "Błąd #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "ścisły błąd" +#~ msgid "strict error" +#~ msgstr "ścisły błąd" diff --git a/locale/pt/LC_MESSAGES/sqlparser.mo b/locale/pt/LC_MESSAGES/sqlparser.mo index d5401731f..b0acddbd1 100644 Binary files a/locale/pt/LC_MESSAGES/sqlparser.mo and b/locale/pt/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/pt/LC_MESSAGES/sqlparser.po b/locale/pt/LC_MESSAGES/sqlparser.po index 5fadb3319..914a7f397 100644 --- a/locale/pt/LC_MESSAGES/sqlparser.po +++ b/locale/pt/LC_MESSAGES/sqlparser.po @@ -1,11 +1,11 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-10-08 21:32+0000\n" -"Last-Translator: ssantos \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-12-30 21:39+0000\n" +"Last-Translator: Marco Aurélio Cardoso \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -13,20 +13,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.2.1\n" +"X-Generator: Weblate 5.4-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ainda não foi implementado." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Uma nova instrução foi encontrada, mas nenhum delimitador entre ela e a " "anterior." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Falta uma vírgula antes do início de uma nova operação de alteração." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operação de alteração não reconhecida." @@ -35,34 +39,54 @@ msgstr "Operação de alteração não reconhecida." msgid "%1$d values were expected, but found %2$d." msgstr "Eram esperados %1$d valores, mas foram encontrados %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "Uma abertura de chaveta seguida de um conjunto de valores era esperada." +msgstr "" +"Uma abertura de chaveta seguida de um conjunto de valores era esperada." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Uma abertura de chaveta era esperada." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Palavra-chave inesperada." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Fim da expressão CASE inesperada" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Pseudónimo potencialmente duplicado da expressão CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Um pseudónimo esperado após AS, mas tem " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Um alias foi previamente encontrado." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Um pseudónimo foi esperado depois do AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +94,181 @@ msgstr "" "Um nome de símbolo era esperado! Uma chave reservada não pode ser usada como " "um nome de coluna sem as chaves." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Um nome do símbolo era esperado!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Uma vírgula ou um colchete de fechamento era esperado." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Um colchete ou parenteses era esperado." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tipo de dado desconhecido." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Uma expressão era esperada." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Um alias era esperado." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Um alias foi previamente encontrado." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Ponto inesperado." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Uma expressão era esperada." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Token inesperado." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Um offset era esperado." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Fim inesperado da expressão LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Essa opção conflita com \"%1$s1\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "O nome antigo da tabela era esperado." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Palavra-chave \"TO\" era esperada." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "O novo nome da tabela era esperado." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Uma operação rename era esperada." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Faltando expressão." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Caractere inesperado." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Espaço(s) em Branco(s) esperado antes do delimitador." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Delimitador esperado." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Citação final %1$s1 era esperada." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Nome da variável era esperado." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Inesperado começo da declaração." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tipo de declaração desconhecida." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Nenhuma transação foi iniciada anteriormente." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Token inesperado." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Este tipo de cláusula foi previamente analisado." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Palavra-chave desconhecida." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Palavra-chave no final da declaração." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Ordenação inesperada de cláusulas." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "O nome da entidade era esperado." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Um nome para a tabela era esperado." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Pelo menos uma definição de coluna era esperada." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Uma palavra-chave \"RETURNS\" era esperada." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Esse tipo de clausula não é válida em queries Multi-tabela." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "Erro #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Fim inesperado da declaração LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Palavra-chave inesperada" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "O nome da CTE era esperado." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "A palavra-chave \"AS\" era esperada." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Subquery da Expressão de Tabela Comum (CTE) era esperada." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Fim inesperado da Expressão de Tabela Comum (CTE) do WITH." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Fim inesperado da expressão LOCK." + +#~ msgid "error #1" +#~ msgstr "Erro #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "Erro severo" +#~ msgid "strict error" +#~ msgstr "Erro severo" diff --git a/locale/pt_BR/LC_MESSAGES/sqlparser.mo b/locale/pt_BR/LC_MESSAGES/sqlparser.mo index 8a05f24dc..83a9497fa 100644 Binary files a/locale/pt_BR/LC_MESSAGES/sqlparser.mo and b/locale/pt_BR/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/sqlparser.po b/locale/pt_BR/LC_MESSAGES/sqlparser.po index 403cfa6da..534ba43b6 100644 --- a/locale/pt_BR/LC_MESSAGES/sqlparser.po +++ b/locale/pt_BR/LC_MESSAGES/sqlparser.po @@ -1,32 +1,36 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-08-21 13:50+0000\n" -"Last-Translator: Daniel Palmeira Huanca \n" -"Language-Team: Portuguese (Brazil) " -"\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-12-30 21:39+0000\n" +"Last-Translator: Marco Aurélio Cardoso \n" +"Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 5.4-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ainda não implementado." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Uma nova declaração foi encontrada, porém não há delimitador entre esta e a " "anterior." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Falta uma vírgula antes do início de uma nova operação de alteração." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Operação de alteração desconhecida." @@ -35,35 +39,54 @@ msgstr "Operação de alteração desconhecida." msgid "%1$d values were expected, but found %2$d." msgstr "Eram esperados %1$d valores, mas foram encontrados %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" "Era esperado um colchete de abertura seguido por um conjunto de valores." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Era esperado um colchete de abertura." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Caracter inesperado." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Final inesperado da expressão CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Pseudônimo potencialmente duplicado da expressão CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Um pseudônimo esperado após AS, mas tem " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Um nome correlação foi encontrado anteriormente." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Um pseudônimo foi esperado depois do AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +94,181 @@ msgstr "" "Era esperado um nome de símbolo! Um caracter reservado não pode ser usado " "como um nome de coluna sem apóstrofo." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Era esperado um nome de símbolo!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Era esperado uma vírgula ou um colchete de fechamento." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Era esperado um colchete de fechamento." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tipo de dado desconhecido." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Era esperado uma expressão." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Era esperado um nome de correlação." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Um nome correlação foi encontrado anteriormente." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Ponto inesperado." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Era esperado uma expressão." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Símbolo (token) inesperado." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Era esperado um espaçamento." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperado da expressão LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Esta opção está em conflito com \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Era esperado o nome anterior da tabela." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Era esperado o caracter \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Era esperado o novo nome da tabela." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Era esperado uma operação renomear." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Faltando expressão." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Caracter inesperado." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Era(m) esperado(s) espaço(s) em branco antes do delimitador." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Esperado delimitador." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Era esperado fechar aspas %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Era perado nome de variável." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Início de declaração inesperado." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tipo de declaração desconhecido." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Nenhuma operação foi iniciada anteriormente." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Símbolo (token) inesperado." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Este tipo de sentença foi previamente analisado." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Comando desconhecido." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Palavra-chave no final da declaração." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Ordenamento de sentenças inesperado." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Era esperado o nome da entidade." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Era esperado um nome de tabela." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Era esperado a definição de pelo menos uma coluna." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Era esperado um comando \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Este tipo de sentença não é válida em consultas à várias tabelas." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "erro #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Fim inesperado da declaração LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Palavra-chave inesperada" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "O nome da Expressão de Tabela Comum (CTE) era esperado." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "A palavra-chave \"AS\" era esperada." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Subquery da Expressão de Tabela Comum (CTE) era esperada." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Fim inesperado da Expressão de Tabela Comum (CTE) do WITH." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Final inesperado da expressão LOCK." + +#~ msgid "error #1" +#~ msgstr "erro #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "Erro estrito" +#~ msgid "strict error" +#~ msgstr "Erro estrito" diff --git a/locale/rcf/LC_MESSAGES/sqlparser.mo b/locale/rcf/LC_MESSAGES/sqlparser.mo new file mode 100644 index 000000000..06ea10422 Binary files /dev/null and b/locale/rcf/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/rcf/LC_MESSAGES/sqlparser.po b/locale/rcf/LC_MESSAGES/sqlparser.po new file mode 100644 index 000000000..f12b17594 --- /dev/null +++ b/locale/rcf/LC_MESSAGES/sqlparser.po @@ -0,0 +1,261 @@ +# phpMyAdmin SQL parser translation. +# Copyright (C) 2015 - 2020 phpMyAdmin devel team +# This file is distributed under the same license as the SQL parser package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: rcf\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/Component.php:39 src/Component.php:59 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:415 src/Statement.php:359 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:88 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:108 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:192 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:255 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:268 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:300 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:403 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:78 src/Components/Limit.php:105 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/OptionsArray.php:146 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:103 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:109 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:124 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:140 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:274 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:313 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:329 src/Lexer.php:348 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:1004 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:1056 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:456 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:499 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:587 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:327 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:398 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:409 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:555 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:549 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:598 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:603 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:707 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:329 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "" + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "" + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "" + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "" diff --git a/locale/ro/LC_MESSAGES/sqlparser.mo b/locale/ro/LC_MESSAGES/sqlparser.mo index 9cf4b1661..fc1598a0c 100644 Binary files a/locale/ro/LC_MESSAGES/sqlparser.mo and b/locale/ro/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ro/LC_MESSAGES/sqlparser.po b/locale/ro/LC_MESSAGES/sqlparser.po index 92b2c7c59..5e7fb9ab5 100644 --- a/locale/ro/LC_MESSAGES/sqlparser.po +++ b/locale/ro/LC_MESSAGES/sqlparser.po @@ -1,33 +1,37 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-07-24 05:41+0000\n" -"Last-Translator: Dan Caragea \n" -"Language-Team: Romanian \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 3.1-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Neimplementat încă." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "A fost găsită o nouă activitate, dar nu există niciun delimitator între " "aceasta și cea anterioară." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Virgulă lipsa înainte de începutul unei noi operațiuni ALTER." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Activitate de modificare necunoscută." @@ -36,34 +40,53 @@ msgstr "Activitate de modificare necunoscută." msgid "%1$d values were expected, but found %2$d." msgstr "Au fost așteptate %1$d valori, dar s-au găsit %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Era așteptată o paranteză de deschidere urmată de un set de valori." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Era așteptată o paranteza de deschidere." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Cuvinte cheie neașteptate." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "Sirsit neasteptat al expresiei \"CASE\"" +msgstr "Sfârșit neașteptat al expresiei CASE" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Alias potențial duplicat al expresiei CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Era așteptat un alias după AS dar am primit " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "A fost găsit anterior un alias." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Era așteptat un alias după AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +94,181 @@ msgstr "" "Era așteptat nume de simbol! Un cuvânt cheie rezervat nu poate fi folosit ca " "nume de coloană fără ghilimele." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Era așteptat un nume de simbol!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Era așteptată o virgulă sau o paranteză de închidere." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Era așteptată o paranteza de închidere." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tip de date nerecunoscut." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Era așteptată o expresie." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Era așteptat un alias." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "A fost găsit anterior un alias." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Punct neașteptat." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Era așteptată o expresie." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Token neașteptat." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Era așteptat un decalaj." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Sfârșit neașteptat al expresiei LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Aceasta opțiune intră în conflict cu „%1$s”." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Era așteptat numele vechi al tabelului." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Cuvantul cheie \"TO\" este cerut." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Era așteptat numele nou al tabelului." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Era așteptată o operație de redenumire." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Lipsește expresia." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Caracter neașteptat." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "S-au așteptat spații goale înainte de delimitator." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "A fost așteptat delimitatorul." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Erau așteptate ghilimele la sfârșit %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Era așteptat numele variabilei." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Început neașteptat al declarației." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tip de activitate nerecunoscut." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Nu a fost începută anterior nicio tranzacție." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Token neașteptat." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Acest tip de clauză a fost analizat anterior." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Cuvânt cheie nerecunoscut." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Cuvânt cheie la sfârșitul declarației." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Ordonare neașteptată a clauzelor." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Era așteptat numele entității." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Era așteptat un nume de tabel." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Era așteptată cel puțin o definiție a coloanei." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Un cuvânt cheie \"RETURNS\" era de aşteptat." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Acest tip de clauză nu este valid în interogările mai multor tabele." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "eroare #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Sfârșit neașteptat al declarației LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Cuvânt-cheie neașteptat" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Era așteptat numele CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Era de aşteptat cuvântul-cheie AS." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Era de așteptat o subinterogare a CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Sfârșit neașteptat al WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Sfârșit neașteptat al expresiei LOCK." + +#~ msgid "error #1" +#~ msgstr "eroare #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "eroare strictă" +#~ msgid "strict error" +#~ msgstr "eroare strictă" diff --git a/locale/ru/LC_MESSAGES/sqlparser.mo b/locale/ru/LC_MESSAGES/sqlparser.mo index 550cd1125..22e630556 100644 Binary files a/locale/ru/LC_MESSAGES/sqlparser.mo and b/locale/ru/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ru/LC_MESSAGES/sqlparser.po b/locale/ru/LC_MESSAGES/sqlparser.po index bb7e47d4e..4a52d6f3b 100644 --- a/locale/ru/LC_MESSAGES/sqlparser.po +++ b/locale/ru/LC_MESSAGES/sqlparser.po @@ -1,33 +1,37 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-09-05 16:20+0000\n" -"Last-Translator: pitchblack \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.17-dev\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ещё не реализовано." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Было найдено новое утверждение, но не было разделителя между ним и " "предыдущим." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Отсутствует запятая перед началом новой операции alter." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Нераспознанная операция изменения." @@ -36,34 +40,53 @@ msgstr "Нераспознанная операция изменения." msgid "%1$d values were expected, but found %2$d." msgstr "Ожидалось %1$d значений, найдено %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Ожидалась открывающая скобка и список значений." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Ожидалась открывающая скобка." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Неожиданное ключевое слово." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Неожиданное окончание CASE выражения" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Потенциальный дубликат псевдонима в выражении CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "После AS ожидается псевдоним, однако получено " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Псевдоним был найден ранее." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "После AS ожидался псевдоним." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +94,181 @@ msgstr "" "Ожидалось имя символа! Зарезервированное ключевое слово не может " "использоваться как имя столбца без обратных запросов." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Ожидалось имя символа!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Ожидалась запятая или закрывающая скобка." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Ожидалась закрывающая скобка." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Нераспознанный тип данных." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Ожидалось выражение." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Ожидался псевдоним." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Псевдоним был найден ранее." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Неожиданная точка." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Ожидалось выражение." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Неожиданный токен." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Ожидалось смещение." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Неожиданное окончание выражения LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Этот параметр конфликтует с \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Ожидалось старое имя таблицы." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Ожидалось ключевое слово \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Ожидалось новое имя таблицы." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Ожидалась операция переименования." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Отсутствует выражение." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Неожиданный символ." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Ожидался пробел перед разделителем." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Ожидается разделитель." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Ожидалась закрывающая кавычка %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Ожидалось имя переменной." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Неожиданное начало выражения." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Неизвестный оператор." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Ни одна транзакция не была ранее начата." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Неожиданный токен." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Этот тип предложения ранее анализировался." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Неизвестное ключевое слово." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Ключевое слово в конце инструкции." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Неожиданный порядок предложений." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Ожидалось имя сущности." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Ожидалось имя таблицы." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Ожидалось объявление, по крайней мере, одного столбца." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Ожидалось ключевое слово \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Такого рода выражения не поддерживаются в мульти-табличных запросах." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "ошибка #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Неожиданное окончание инструкции LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Неожиданное ключевое слово" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Ожидалось имя CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Ожидалось ключевое слово AS." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Ожидался подзапрос CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Неожиданное окончание CTE WITH." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Неожиданное окончание выражения LOCK." + +#~ msgid "error #1" +#~ msgstr "ошибка #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "строгая ошибка" +#~ msgid "strict error" +#~ msgstr "строгая ошибка" diff --git a/locale/si/LC_MESSAGES/sqlparser.mo b/locale/si/LC_MESSAGES/sqlparser.mo index ce5d946ab..a0eca57b4 100644 Binary files a/locale/si/LC_MESSAGES/sqlparser.mo and b/locale/si/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/si/LC_MESSAGES/sqlparser.po b/locale/si/LC_MESSAGES/sqlparser.po index 8a94a2525..a424f6909 100644 --- a/locale/si/LC_MESSAGES/sqlparser.po +++ b/locale/si/LC_MESSAGES/sqlparser.po @@ -1,30 +1,34 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-10-01 14:35+0000\n" -"Last-Translator: Menuka Ishan \n" -"Language-Team: Sinhala \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Sinhala \n" "Language: si\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.2-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "තවම නිර්මාණය කර නොමැත." +msgstr "තවම නිර්මාණය කර නොමැත." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "හදුනානොගත් වෙනස් කිරීමේ මෙහෙයුමක්." @@ -33,212 +37,282 @@ msgstr "හදුනානොගත් වෙනස් කිරීමේ මෙ msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 #, fuzzy #| msgid "Unexpected characters on line %s." msgid "Unexpected keyword." msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "'CASE' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "'CASE' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "අනවර්ථ නාමයක් බලාපොරොත්තු වේ." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "සංකේත නාමයක් බලාපොරොත්තු වේ!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "කොමාවක් හෝ අවසන් කිරීමේ වරහනක් බලාපොරොත්තු වේ." +msgstr "කොමාවක් හෝ අවසන් කිරීමේ වරහනක් බලාපොරොත්තු වේ." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "අවසන් කිරීමේ වරහනක් බලාපොරොත්තු වේ." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "ප්‍රකාශයක් බලපොරොත්තු වේ." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "අනවර්ථ නාමයක් බලාපොරොත්තු වේ." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "බලාපොරොත්තු නොවූ ඩොට් සලකුණක්." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "ප්‍රකාශයක් බලපොරොත්තු වේ." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "'LOCK' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "Title of browser window when a table is selected" msgid "The old name of the table was expected." msgstr "වගුවක් තෝරා ඇති විට බ්‍රව්සර කවුළුවේ මාතෘකාව" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "පේළිය ඉවත් කරන ලදි." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "regular expression ලෙස" -#: src/Lexer.php:237 +#: src/Lexer.php:274 #, fuzzy #| msgid "Unexpected characters on line %s." msgid "Unexpected character." msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Event %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "%1$s සිද්ධිය සාදන ලදි." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "ගොනු නාම ටෙම්ප්ලේටය" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "වගුව මුලදී" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -#, fuzzy -#| msgid "Unexpected characters on line %s." -msgid "Unexpected token." -msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "වගුව මුලදී" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "වගුව මුලදී" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "ගොනු නාම ටෙම්ප්ලේටය" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "පේළිය ඉවත් කරන ලදි." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "වගුව මුලදී" + +#: src/Statements/PurgeStatement.php:138 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword" +msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "Title of browser window when a table is selected" +msgid "The name of the CTE was expected." +msgstr "වගුවක් තෝරා ඇති විට බ්‍රව්සර කවුළුවේ මාතෘකාව" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "An expression was expected." +msgid "AS keyword was expected." +msgstr "ප්‍රකාශයක් බලපොරොත්තු වේ." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "Title of browser window when a table is selected" +msgid "Subquery of the CTE was expected." +msgstr "වගුවක් තෝරා ඇති විට බ්‍රව්සර කවුළුවේ මාතෘකාව" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "වගුව මුලදී" + +#, fuzzy +#~| msgid "Unexpected end of CASE expression" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "'LOCK' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "දෝෂ." +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "දෝෂ." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "දෝෂ රැස්කරන්න" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "දෝෂ රැස්කරන්න" diff --git a/locale/sk/LC_MESSAGES/sqlparser.mo b/locale/sk/LC_MESSAGES/sqlparser.mo index eb55db6ed..6fa89c145 100644 Binary files a/locale/sk/LC_MESSAGES/sqlparser.mo and b/locale/sk/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/sk/LC_MESSAGES/sqlparser.po b/locale/sk/LC_MESSAGES/sqlparser.po index 692815af4..44856d651 100644 --- a/locale/sk/LC_MESSAGES/sqlparser.po +++ b/locale/sk/LC_MESSAGES/sqlparser.po @@ -1,32 +1,36 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-05-10 13:09+0000\n" -"Last-Translator: Martin Lacina \n" -"Language-Team: Slovak \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Zatiaľ neimplementované." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Nový príkaz bol nájdený, ale nenašiel sa oddeľovač medzi týmto a predošlým " "príkazom." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Chýba čiarka pred začiatkom novej operácie zmeny." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Nerozpoznaná operácia zmeny." @@ -35,34 +39,57 @@ msgstr "Nerozpoznaná operácia zmeny." msgid "%1$d values were expected, but found %2$d." msgstr "Očakávali sa hodnoty %1$d, ale našli sa %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Očakávala sa otvárajúca zátvorka nasledovaná sadou hodnôt." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Očakávala sa otvárajúca zátvorka." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Neočakávaný znak." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Neočakávaný koniec CASE výrazu" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Neočakávaný koniec CASE výrazu" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Alias bol predtým najdený." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Bol očakávaný alias." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +97,191 @@ msgstr "" "Očakávalo sa meno symbolu! Rezervované kľúčové slovo nemôže byt použité ako " "meno stĺpca bez spätných uvodzoviek." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Očakávalo sa meno symbolu!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Bola očakávaná čiarka alebo uzatváracia zátvorka." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Očakávalo sa uzatvorenie zátvorky." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Nerozpoznaný typ dát." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Bol očakávaný výraz." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Bol očakávaný alias." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Alias bol predtým najdený." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Neočakávaná bodka." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Bol očakávaný výraz." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Neočakávaný token." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Odstup bol očakávaný." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Neočakávaný koniec LOCK výrazu." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Táto možnosť je v rozpore s %1$s." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Bolo očakávané staré meno tabuľky." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Kľúčové slovo \"TO\" bolo očakávané." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Bolo očakávané nové meno tabuľky." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Očakávala sa operácia premenovania." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Chýbajúci výraz." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Neočakávaný znak." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Očakávala sa medzera pred oddelovačom." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Očakával sa oddeľovač." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." -msgstr "Ukončujúca úvodzovka %1$s sa očakávala." +msgstr "Ukončujúca úvodzovka %1$s sa očakávala." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Očakávalo sa meno premennej." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Neočakávaný začiatok výrazu." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Nerozpoznaný typ výrazu." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Transakcia sa predtým nezačala." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Neočakávaný token." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Tento typ vety bol predtým rozobraný." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Nerozpoznané kľúčové slovo." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Kľúčové slovo na konci výrazu." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Neočakávané poradie výrazov." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Meno celku bolo očakávané." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Očakávalo sa meno tabuľky." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Očakávala sa aspoň jedna definícia stĺpca." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Očakávalo sa kľúčové slovo \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Takýto typ výrazu nie je platný vo viac tabuľkových dotazoch." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "Chyba #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Neočakávaný začiatok výrazu." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Neočakávaný znak" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Meno celku bolo očakávané." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "Očakávalo sa kľúčové slovo \"RETURNS\"." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Meno celku bolo očakávané." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Neočakávaný začiatok výrazu." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Neočakávaný koniec LOCK výrazu." + +#~ msgid "error #1" +#~ msgstr "Chyba #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "Striktná chyba" +#~ msgid "strict error" +#~ msgstr "Striktná chyba" diff --git a/locale/sl/LC_MESSAGES/sqlparser.mo b/locale/sl/LC_MESSAGES/sqlparser.mo index 9f2f909ff..0af123e73 100644 Binary files a/locale/sl/LC_MESSAGES/sqlparser.mo and b/locale/sl/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/sl/LC_MESSAGES/sqlparser.po b/locale/sl/LC_MESSAGES/sqlparser.po index 964edc484..a656ec2e7 100644 --- a/locale/sl/LC_MESSAGES/sqlparser.po +++ b/locale/sl/LC_MESSAGES/sqlparser.po @@ -1,11 +1,11 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-11-09 23:58+0000\n" -"Last-Translator: Domen \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Slovenian \n" "Language: sl\n" @@ -14,20 +14,24 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " "n%100==4 ? 2 : 3;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ni še implementirano." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Naleteli smo na nov stavek, vendar med njim in prejšnjim stavkom ni " "ločilnega znaka." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Manjkajoča vejica pred začetkom nove operacije alter." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Neprepoznan poseg spremembe." @@ -36,34 +40,53 @@ msgstr "Neprepoznan poseg spremembe." msgid "%1$d values were expected, but found %2$d." msgstr "Pričakovali smo %1$d vrednosti, vendar smo jih našli %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Pričakovali smo začetni oklepaj, ki mu sledi množica vrednosti." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Pričakovali smo začetni oklepaj." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Nepričakovana ključna beseda." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Nepričakovan konec izraza CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Morebiti podvojen vzdevek izraza CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Po AS smo pričakovali vzdevek, dobili pa " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Vzdevek smo našli že prej." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Po AS smo pričakovali vzdevek." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -71,150 +94,189 @@ msgstr "" "Pričakovali smo ime simbola! Rezervirane besede ne morete uporabiti kot ime " "stolpca brez ustreznih narekovajev." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Pričakovali smo ime znaka!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Pričakovali smo vejico ali zaklepaj." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Pričakovali smo zaklepaj." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Neprepoznana vrsta podatkov." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Pričakovali smo izraz." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Pričakovali smo vzdevek." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Vzdevek smo našli že prej." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Nepričakovana pika." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Pričakovali smo izraz." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Nepričakovan žeton." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Pričakovali smo odmik." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Nepričakovan konec izraza LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Izbira je v sporu z \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Pričakovali smo staro ime tabele." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Pričakovali smo ključno besedo \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Pričakovali smo novo ime tabele." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Pričakovali smo poseg preimenovanja." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Manjkajoč izraz." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Nepričakovan znak." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Pred ločitvenim znakom smo pričakoval prazne znake." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Pričakovali smo ločitveni znak." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Pričakovali smo končni narekovaj %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Pričakovali smo ime spremenljivke." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Nepričakovan začetek stavka." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Neprepoznana vrsta stavka." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Začeli niste nobene transakcije." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Nepričakovan žeton." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "To vrsto stavka smo prej razčlenili." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Nepričakovana ključna beseda." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Ključna beseda na koncu stavka." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Nepričakovan vrstni red stavkov." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Pričakovali smo ime entitete." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Pričakovali smo ime tabele." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Pričakovali smo vsaj eno opredelitev stolpca." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Pričakovali smo ključno besedo \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Ta vrsta stavka ni veljavna v večtabelnih poizvedbah." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "napaka #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Nepričakovan konec izjave LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Nepričakovana ključna beseda" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Pričakovali smo ime entitete." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "Pričakovali smo ključno besedo \"RETURNS\"." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Pričakovali smo ime entitete." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected end of LOCK statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Nepričakovan konec izjave LOCK." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Nepričakovan konec izraza LOCK." + +#~ msgid "error #1" +#~ msgstr "napaka #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "stroga napaka" +#~ msgid "strict error" +#~ msgstr "stroga napaka" diff --git a/locale/sq/LC_MESSAGES/sqlparser.mo b/locale/sq/LC_MESSAGES/sqlparser.mo index 06e2f54e0..0d36ff21e 100644 Binary files a/locale/sq/LC_MESSAGES/sqlparser.mo and b/locale/sq/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/sq/LC_MESSAGES/sqlparser.po b/locale/sq/LC_MESSAGES/sqlparser.po index c24bbdc3d..6d057cb3a 100644 --- a/locale/sq/LC_MESSAGES/sqlparser.po +++ b/locale/sq/LC_MESSAGES/sqlparser.po @@ -1,32 +1,36 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-03-20 00:34+0000\n" -"Last-Translator: M. M. \n" -"Language-Team: Albanian \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Albanian \n" "Language: sq\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.20-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Nuk është implementuar ende." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Një deklaratë e re është gjetur, por nuk ka delimiter ndërmjet asaj dhe " "tjetrës më përpara." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Veprim alter i panjohur." @@ -35,34 +39,57 @@ msgstr "Veprim alter i panjohur." msgid "%1$d values were expected, but found %2$d." msgstr "Vlerat %1$d u pritën, por u gjetën %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Pritej një kllapë e hapur, e ndjekur nga një set vlerash." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Pritej një kllapë e hapur." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Fjalë kyçe e papritur." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Fund i papritur i shprehjes së CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Fund i papritur i shprehjes së CASE" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Një pseudonim është gjetur më përpara." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Pritej një alias (pseudonim)." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -70,150 +97,191 @@ msgstr "" "Pritej një emër simboli! Një fjalë kyçe e rezervuar nuk mund të përdoret si " "një emër kolone pa backquotes." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Pritej emri i një simboli!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Pritej një presje ose një kllapë mbyllëse." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Pritej një kllapë mbyllëse." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tip të dhënash i panjohur." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Pritej një shprehje." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Pritej një alias (pseudonim)." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Një pseudonim është gjetur më përpara." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Pikë e papritur." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Pritej një shprehje." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Shenjë e papritur." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Pritej një rezultat (offset)." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Fund i papritur i shprehjes së LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Ky opsion ndeshet me \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Pritej emri i vjetër i tabelës." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Pritej fjala kyçe \"TO\" (për)." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Pritej emri i ri i tabelës." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Pritej një veprim riemërimi." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Shprehje që mungon." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Karakter i papritur." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Pritej hapësirë(a) e bardhë para delimiterit." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Delimitues i pritshëm." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Pritej thonjëza e fundit %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Pritej emri i ndryshores." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Fillim i papritur i deklaratës." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tip deklarate i panjohur." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Deri më tani nuk ka filluar ndonjë transaksion." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Shenjë e papritur." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Ky tip i klauzolës është parsuar më parë." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Fjalë kyçe e panjohur." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Fillim i papritur i deklaratës." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Urdhërimi i papritur i klauzolave." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Pritej emri i entitetit." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Pritej një emër tabele." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Pritej së paku një përcaktim kolone." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Pritej një fjalë kyçe \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Ky lloj i klauzolës nuk është i vlefshëm në pyetjet me shumë tavolina." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "gabim # 1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Fillim i papritur i deklaratës." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Fjalë kyçe e papritur" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Pritej emri i entitetit." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "Pritej një fjalë kyçe \"RETURNS\"." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Pritej emri i entitetit." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Fillim i papritur i deklaratës." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Fund i papritur i shprehjes së LOCK." + +#~ msgid "error #1" +#~ msgstr "gabim # 1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "gabim i rreptë" +#~ msgid "strict error" +#~ msgstr "gabim i rreptë" diff --git a/locale/sqlparser.pot b/locale/sqlparser.pot index 0d1e1e26e..46d9ae957 100644 --- a/locale/sqlparser.pot +++ b/locale/sqlparser.pot @@ -1,14 +1,14 @@ # phpMyAdmin SQL parser translation. -# Copyright (C) 2015 - 2017 phpMyAdmin devel team +# Copyright (C) 2015 - 2023 phpMyAdmin devel team # This file is distributed under the same license as the SQL parser package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,16 +17,20 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -35,183 +39,224 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -msgid "An alias was expected." +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." msgstr "" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." msgstr "" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "" + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "" + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." msgstr "" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." msgstr "" diff --git a/locale/sr/LC_MESSAGES/sqlparser.mo b/locale/sr/LC_MESSAGES/sqlparser.mo index 815f3d479..337eeb2f4 100644 Binary files a/locale/sr/LC_MESSAGES/sqlparser.mo and b/locale/sr/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/sr/LC_MESSAGES/sqlparser.po b/locale/sr/LC_MESSAGES/sqlparser.po index acbf52306..594393d70 100644 --- a/locale/sr/LC_MESSAGES/sqlparser.po +++ b/locale/sr/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-10-15 11:25+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Serbian =2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.5-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -34,214 +38,280 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Није изабрана ни једна база." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy msgid "A symbol name was expected!" msgstr "Шаблон имена датотеке" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "Није изабрана ни једна база." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Нема одабраних редова" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "Није изабрана ни једна база." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Нема одабраних редова" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "На почетку табеле" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." msgstr "Број отворених табела." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 #, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." msgstr "Број отворених табела." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "Ред је обрисан" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "као регуларни израз" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format msgid "Ending quote %1$s was expected." msgstr "Табела %s је одбачена" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy msgid "Variable name was expected." msgstr "Шаблон имена датотеке" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "На почетку табеле" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "На почетку табеле" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "На почетку табеле" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "Број отворених табела." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy msgid "A table name was expected." msgstr "Шаблон имена датотеке" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Ред је обрисан" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "На почетку табеле" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "Број отворених табела." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "Нема одабраних редова" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "Број отворених табела." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "На почетку табеле" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "На почетку табеле" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "Грешка" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Грешка" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query type" -msgid "strict error" -msgstr "Врста упита" +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Врста упита" diff --git a/locale/sr@latin/LC_MESSAGES/sqlparser.mo b/locale/sr@latin/LC_MESSAGES/sqlparser.mo index a9592f71e..981d1b7f6 100644 Binary files a/locale/sr@latin/LC_MESSAGES/sqlparser.mo and b/locale/sr@latin/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/sr@latin/LC_MESSAGES/sqlparser.po b/locale/sr@latin/LC_MESSAGES/sqlparser.po index ec17b5630..6c50a7f91 100644 --- a/locale/sr@latin/LC_MESSAGES/sqlparser.po +++ b/locale/sr@latin/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-10-15 11:24+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Serbian (latin) =2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.5-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "" @@ -34,218 +38,284 @@ msgstr "" msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "Table name template" msgid "A symbol name was expected!" msgstr "Šablon imena tabele" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "Nije izabrana ni jedna baza." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Nema odabranih redova" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "Nije izabrana ni jedna baza." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Nema odabranih redova" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Na početku tabele" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." msgstr "Broj otvorenih tabela." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 #, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." msgstr "Broj otvorenih tabela." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "Red je obrisan" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "kao regularni izraz" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Event %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "Događaj %1$s je kreiran." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "Šablon imena tabele" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "Na početku tabele" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "Na početku tabele" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "Na početku tabele" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "Broj otvorenih tabela." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "Šablon imena tabele" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Red je obrisan" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Na početku tabele" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "Broj otvorenih tabela." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "Nema odabranih redova" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "Broj otvorenih tabela." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "Na početku tabele" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Na početku tabele" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "Greška" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Greška" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Prikupljanje grešaka" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Prikupljanje grešaka" diff --git a/locale/sv/LC_MESSAGES/sqlparser.mo b/locale/sv/LC_MESSAGES/sqlparser.mo index d0b01c1ae..f91b34a24 100644 Binary files a/locale/sv/LC_MESSAGES/sqlparser.mo and b/locale/sv/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/sv/LC_MESSAGES/sqlparser.po b/locale/sv/LC_MESSAGES/sqlparser.po index b946fccd6..3f88779a4 100644 --- a/locale/sv/LC_MESSAGES/sqlparser.po +++ b/locale/sv/LC_MESSAGES/sqlparser.po @@ -1,31 +1,35 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-11-12 10:41+0000\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: Swedish \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2022-10-23 12:05+0000\n" +"Last-Translator: Tom Sawyer \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.5-dev\n" +"X-Generator: Weblate 4.14.2-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ännu inte implementerat." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "En ny sats hittades, men ingen avgränsare mellan det och den föregående." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Kommatecken saknas före start av en ny alter-operation." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Okänd operation." @@ -34,199 +38,267 @@ msgstr "Okänd operation." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d värden var väntat, men hittade %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "En inledande hakparentes följt av en uppsättning värden förväntades." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "En inledande hakparentes förväntades." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 #, fuzzy #| msgid "Unexpected token." msgid "Unexpected keyword." msgstr "Oväntad token." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Ett alias hittades tidigare." + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Ett alias förväntades." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "Variable name was expected." msgid "A symbol name was expected!" msgstr "Variabel namn förväntades." -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Semikolon eller en avslutande hakparentes förväntades." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "En avslutande hakparentes förväntades." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Okänd datatyp." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Ett uttryck förväntades." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Ett alias förväntades." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Ett alias hittades tidigare." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Oväntad punkt." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Ett uttryck förväntades." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Oväntad token." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "En förskjutning förväntades." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK expression." +msgstr "Oväntad början av satsen." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Det här alternativet är i konflikt med \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Det gamla namnet på tabellen förväntades." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Sökordet \"Till\" förväntades." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Det nya namnet på tabellen förväntades." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Ett namnbyte förväntades." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "som reguljärt uttryck" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Oväntade tecken." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Förväntade avgränsare." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Slut citat %1$s förväntades." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Variabel namn förväntades." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Oväntad början av satsen." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Okänd uttryckstyp." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Ingen transaktion startades tidigare." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Oväntad token." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Okänt nyckelord." -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "Unexpected beginning of statement." msgid "Keyword at end of statement." msgstr "Oväntad början av satsen." -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "Unexpected beginning of statement." msgid "Unexpected ordering of clauses." msgstr "Oväntad början av satsen." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Namnet på entiteten förväntades." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Variable name was expected." msgid "A table name was expected." msgstr "Variabel namn förväntades." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Minst en kolumndefinition förväntades." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Ett nyckelord förväntades." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Oväntad början av satsen." + +#: src/Statements/PurgeStatement.php:138 +#, fuzzy +#| msgid "Unexpected token." +msgid "Unexpected keyword" +msgstr "Oväntad token." + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Namnet på entiteten förväntades." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "Ett nyckelord förväntades." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Namnet på entiteten förväntades." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Oväntad början av satsen." + +#, fuzzy +#~| msgid "Unexpected beginning of statement." +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Oväntad början av satsen." + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "fel." +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "fel." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "Samla fel" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Samla fel" diff --git a/locale/ta/LC_MESSAGES/sqlparser.mo b/locale/ta/LC_MESSAGES/sqlparser.mo index 406863d30..0f8749cc5 100644 Binary files a/locale/ta/LC_MESSAGES/sqlparser.mo and b/locale/ta/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ta/LC_MESSAGES/sqlparser.po b/locale/ta/LC_MESSAGES/sqlparser.po index 9650029da..9b7a286de 100644 --- a/locale/ta/LC_MESSAGES/sqlparser.po +++ b/locale/ta/LC_MESSAGES/sqlparser.po @@ -4,245 +4,280 @@ # FIRST AUTHOR , YEAR. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-07-21 09:33+0000\n" -"Last-Translator: Murshid Ahmed \n" -"Language-Team: Tamil \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2025-01-28 00:01+0000\n" +"Last-Translator: தமிழ்நேரம் \n" +"Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.16-dev\n" +"X-Generator: Weblate 5.10-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "இன்னும் அமுலாக்கப்படவில்லை." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"ஒரு புதிய அறிக்கை கண்டுபிடிக்கப்பட்டது, ஆனால் அதற்கும் முந்தைய இடத்திற்கும் இடையில் எந்த " +"டிலிமிட்டரும் இல்லை." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "மாற்றம் செய்விக்கும் முன்னருக்கான காற்புள்ளி காணப்படவில்லை." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "அங்கீகரிக்கப்படாத மாற்று செயல்பாடு." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d மதிப்புகள் எதிர்பார்க்கப்பட்டன, ஆனால் %2$d ஐக் கண்டறிந்தது." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" +"ஒரு தொடக்க அடைப்புக்குறி மதிப்புகளின் தொகுப்பைத் தொடர்ந்து எதிர்பார்க்கப்பட்டது." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." -msgstr "" - -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +msgstr "ஒரு திறப்பு அடைப்புக்குறி எதிர்பார்க்கப்பட்டது." + +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "எதிர்பாராத சிறப்புச்சொல்." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "" +msgstr "வழக்கு வெளிப்பாட்டின் எதிர்பாராத முடிவு" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "வழக்கு வெளிப்பாட்டின் சாத்தியமான நகல் மாற்றுப்பெயர்." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "ஒரு மாற்றுப்பெயர் எதிர்பார்க்கப்பட்டது ஆனால் கிடைத்தது " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "ஒரு மாற்றுப்பெயர் முன்பு கண்டுபிடிக்கப்பட்டது." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "அச் க்குப் பிறகு ஒரு மாற்றுப்பெயர் எதிர்பார்க்கப்பட்டது." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" +"ஒரு குறியீட்டு பெயர் எதிர்பார்க்கப்பட்டது! முன்பதிவு செய்யப்பட்ட முக்கிய சொல்லை பின்னணி " +"இல்லாமல் நெடுவரிசை பெயராகப் பயன்படுத்த முடியாது." -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "No tables selected." +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." +msgstr "அடையாளம் ஒன்று எதிர்பார்க்கப்பட்டது!" -#: src/Components/CreateDefinition.php:270 -#, fuzzy -#| msgid "No tables selected." +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." -msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." +msgstr "ஒரு காற்புள்ளி அல்லது மூடும் அடைப்புக்குறி எதிர்பார்க்கப்பட்டது." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." -msgstr "" +msgstr "ஒரு மூடும் அடைப்புக்குறி எதிர்பார்க்கப்பட்டது." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." -msgstr "" +msgstr "அங்கீகரிக்கப்படாத தரவு வகை." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 -#, fuzzy -#| msgid "No tables selected." -msgid "An alias was expected." -msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "ஒரு வெளிப்பாடு எதிர்பார்க்கப்பட்டது." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +msgid "An alias was expected." +msgstr "ஒரு மாற்றுப்பெயர் எதிர்பார்க்கப்பட்டது." -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "" - -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "தெரிவுசெய்யப்பட வரிசைகள் இல்லை" +msgstr "எதிர்பாராத புள்ளி." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "எதிர்பாராத கிள்ளாக்கு." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." -msgstr "" +msgstr "ஒரு ஆஃப்செட் எதிர்பார்க்கப்பட்டது." + +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "பூட்டு வெளிப்பாட்டின் எதிர்பாராத முடிவு." -#: src/Components/OptionsArray.php:143 +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." -msgstr "" +msgstr "இந்த விருப்பம் \"%1$s\" உடன் முரண்படுகிறது." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." -msgstr "" +msgstr "அட்டவணையின் பழைய பெயர் எதிர்பார்க்கப்பட்டது." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." -msgstr "" +msgstr "\"To\" என்ற முக்கிய சொல் எதிர்பார்க்கப்பட்டது." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." -msgstr "" +msgstr "அட்டவணையின் புதிய பெயர் எதிர்பார்க்கப்பட்டது." -#: src/Components/RenameOperation.php:153 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." -msgstr "இந்நிரைவரிசை அழிக்கப்பட்டது." +msgstr "பெயர் மாற்றத்திற்கான செயல் எதிர்பார்க்கப்பட்டது." -#: src/Components/SetOperation.php:117 -#, fuzzy -#| msgid "as regular expression" +#: src/Components/SetOperation.php:121 msgid "Missing expression." -msgstr "வழக்கமான வெளிப்பாடு" +msgstr "காணப்படாத வெளிப்பாடு." -#: src/Lexer.php:237 -#, fuzzy -#| msgid "Unexpected characters on line %s." +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "%sம் வரியில் எதிர்பாராத எழுத்துக்கள் உள்ளன." +msgstr "எதிர்பாராத தன்மை." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." -msgstr "" +msgstr "டிலிமிட்டருக்கு முன் எதிர்பார்க்கப்படும் இடைவெளி (கள்)." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." -msgstr "" +msgstr "எதிர்பார்க்கப்படும் டிலிமிட்டர்." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." -msgstr "" +msgstr "முடிவு மேற்கோள் %1$s எதிர்பார்க்கப்பட்டது." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." -msgstr "" +msgstr "மாறி பெயர் எதிர்பார்க்கப்பட்டது." -#: src/Parser.php:423 -#, fuzzy -#| msgid "Rate of table open" +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" +msgstr "அறிக்கையின் எதிர்பாராத துவக்கம்." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." -msgstr "" +msgstr "அங்கீகரிக்கப்படாத அறிக்கை வகை." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." -msgstr "" - -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -#, fuzzy -#| msgid "Unexpected characters on line %s." -msgid "Unexpected token." -msgstr "%sம் வரியில் எதிர்பாராத எழுத்துக்கள் உள்ளன." +msgstr "எந்த பரிவர்த்தனையும் முன்பு தொடங்கப்படவில்லை." -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." -msgstr "" +msgstr "இந்த வகை பிரிவு முன்பு பாகுபடுத்தப்பட்டது." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." -msgstr "" +msgstr "அங்கீகரிக்கப்படாத முக்கிய சொல்." -#: src/Statement.php:377 -#, fuzzy -#| msgid "Rate of table open" +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" +msgstr "அறிக்கையின் முடிவில் முக்கிய சொல்." -#: src/Statement.php:503 -#, fuzzy -#| msgid "Rate of table open" +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" +msgstr "உட்பிரிவுகளின் எதிர்பாராத வரிசைப்படுத்தல்." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." -msgstr "" +msgstr "நிறுவனத்தின் பெயர் எதிர்பார்க்கப்பட்டது." -#: src/Statements/CreateStatement.php:430 -#, fuzzy -#| msgid "No tables selected." +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." +msgstr "ஒரு அட்டவணை பெயர் எதிர்பார்க்கப்பட்டது." -#: src/Statements/CreateStatement.php:438 -#, fuzzy -#| msgid "The row has been deleted." +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." -msgstr "இந்நிரைவரிசை அழிக்கப்பட்டது." +msgstr "குறைந்தது ஒரு நெடுவரிசை வரையறை எதிர்பார்க்கப்பட்டது." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." -msgstr "" +msgstr "ஒரு \"வருமானம்\" முக்கிய சொல் எதிர்பார்க்கப்பட்டது." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." -msgstr "" +msgstr "பல அட்டவணை வினவல்களில் இந்த வகை பிரிவு செல்லுபடியாகாது." + +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "பூட்டு அறிக்கையின் எதிர்பாராத முடிவு." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "எதிர்பாராத முக்கிய சொல்" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "CTE இன் பெயர் எதிர்பார்க்கப்பட்டது." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "முக்கிய சொல் எதிர்பார்க்கப்பட்டது." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "CTE இன் துணைக்குழு எதிர்பார்க்கப்பட்டது." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "CTE உடன் எதிர்பாராத முடிவு." + +#, fuzzy +#~| msgid "Rate of table open" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "வலு" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "வலு" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query error" -msgid "strict error" -msgstr "வினவல் வழு" +#~| msgid "Query error" +#~ msgid "strict error" +#~ msgstr "வினவல் வழு" diff --git a/locale/te/LC_MESSAGES/sqlparser.mo b/locale/te/LC_MESSAGES/sqlparser.mo index 7ca8ae7ee..2e6fb50c6 100644 Binary files a/locale/te/LC_MESSAGES/sqlparser.mo and b/locale/te/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/te/LC_MESSAGES/sqlparser.po b/locale/te/LC_MESSAGES/sqlparser.po index fde842d5f..9806be66b 100644 --- a/locale/te/LC_MESSAGES/sqlparser.po +++ b/locale/te/LC_MESSAGES/sqlparser.po @@ -4,9 +4,9 @@ # FIRST AUTHOR , YEAR. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2017-04-12 15:19+0000\n" "Last-Translator: bhargavi sabbisetty \n" "Language-Team: Telugu \n" -"Language-Team: Thai \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" +"Language-Team: Thai \n" "Language: th\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.8-dev\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "ยังไม่มีการดำเนินการ" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "ตรวจพบประพจน์ใหม่ แต่ไม่มีตัวคั่นระหว่างข้อความนี้กับข้อความก่อนหน้า" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "ไม่รู้จักการปฏิบัติการนอกเหนือจากนี้" @@ -33,34 +37,57 @@ msgstr "ไม่รู้จักการปฏิบัติการนอ msgid "%1$d values were expected, but found %2$d." msgstr "ค่าของ %1$d ได้รับการคาดเดา แต่สิ่งที่พบคือ %2$d" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "เปิดวงเล็บเหลี่ยมแล้วตามด้วยชุดของค่าที่จะคาดเดา" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "วงเล็บเหลี่ยมเปิดได้รับการคาดเดา" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "คำสำคัญที่ไม่ได้รับการคาดเดา" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "จุดสิ้นสุดนิพจน์ CASE ไม่ได้รับการคาดเดา" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "จุดสิ้นสุดนิพจน์ CASE ไม่ได้รับการคาดเดา" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "ชื่อ alias มีอยู่ก่อนแล้ว" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "ตัวแทนได้รับการคาดเดา" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -68,150 +95,191 @@ msgstr "" "ชื่อสัญลักษณ์ได้รับการคาดเดาแล้ว " "คำสำคัญที่สงวนไว้ไม่สามารถใช้เป็นชื่อคอลัมน์โดยไม่มีอัญประกาศกลับหลังได้" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "ชื่อสัญลักษณ์ได้รับการคาดเดา!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "จุลภาค หรือ วงเล็บปิด ได้รับการคาดเดา" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "วงเล็บปิดได้รับการคาดเดา" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "ไม่รู้จักชนิดข้อมูล" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "หนึ่งนิพจน์ได้รับการคาดเดา" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "ตัวแทนได้รับการคาดเดา" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "ชื่อ alias มีอยู่ก่อนแล้ว" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "จุด ไม่ได้รับการคาดเดา" -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "หนึ่งนิพจน์ได้รับการคาดเดา" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "โทเค็นที่ไม่ได้คาดหวังไว้" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "หนึ่งออฟเซ็ตได้รับการคาดเดา" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "จุดสิ้นสุดนิพจน์ LOCK ไม่ได้รับการคาดเดา." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "ตัวเลือกนี้ขัดแย้งกับ %1$s" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "ชื่อเดิมของตารางได้รับการคาดเดา" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "คำสำคัญ \"TO\" ได้รับการคาดเดา" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "ชื่อตารางใหม่ได้รับการคาดเดา" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "การเปลี่ยนชื่อได้รับการคาดเดา" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "นิพจน์ขาดหาย" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "ตัวอักษรที่คาดเดาไม่ได้" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "วรรค(อาจจะมากกว่าหนึ่ง) ได้รับการคาดเดาก่อนตัวคั่น" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "ตัวคั่นได้รับการคาดเดา" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "อัญประกาศปิด %1$s ได้รับการคาดเดา" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "ชื่อตัวแปรได้รับการคาดเดา" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "ไม่อาจคาดเดาจุดเริ่มต้นของประพจน์" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "ไม่รู้จักชนิดของประพจน์" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "ไม่มีข้อมูลเข้าออกได้เริ่มต้นมาก่อน" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "โทเค็นที่ไม่ได้คาดหวังไว้" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "ชนิดของประโยคนี้ถูกวิเคราะห์มาแล้วก่อนหน้านี้" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "ไม่รู้จักชนิดของคีย์เวิร์ด" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "คีย์เวิร์ดในตอนท้ายของคำสั่ง" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "การเรียงของประโยคที่ไม่ได้คาดหวังไว้" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "ชื่อเอนทิติได้รับการคาดหวัง" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "ชื่อตารางได้รับการคาดหวัง" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "การกำหนดคอลัมน์อย่างน้อยหนึ่งคอลัมน์ได้รับการคาดหวัง" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "คีย์เวิร์ด \"RETURNS\" ได้รับการคาดหวัง" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "ประโยคชนิดนี้ไม่ถูกต้องในการเรียกใช้แบบหลายตาราง" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "ผิดพลาด #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "ไม่อาจคาดเดาจุดเริ่มต้นของประพจน์" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "คำสำคัญที่ไม่ได้รับการคาดเดา" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "ชื่อเอนทิติได้รับการคาดหวัง" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "A \"RETURNS\" keyword was expected." +msgid "AS keyword was expected." +msgstr "คีย์เวิร์ด \"RETURNS\" ได้รับการคาดหวัง" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "ชื่อเอนทิติได้รับการคาดหวัง" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "ไม่อาจคาดเดาจุดเริ่มต้นของประพจน์" + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "จุดสิ้นสุดนิพจน์ LOCK ไม่ได้รับการคาดเดา." + +#~ msgid "error #1" +#~ msgstr "ผิดพลาด #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "ข้อผิดพลาดที่ครัดเคร้ง" +#~ msgid "strict error" +#~ msgstr "ข้อผิดพลาดที่ครัดเคร้ง" diff --git a/locale/tk/LC_MESSAGES/sqlparser.mo b/locale/tk/LC_MESSAGES/sqlparser.mo index 91144a3cf..add4581e2 100644 Binary files a/locale/tk/LC_MESSAGES/sqlparser.mo and b/locale/tk/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/tk/LC_MESSAGES/sqlparser.po b/locale/tk/LC_MESSAGES/sqlparser.po index eefa2a3c4..967631339 100644 --- a/locale/tk/LC_MESSAGES/sqlparser.po +++ b/locale/tk/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2013-05-07 17:12+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Turkmen , 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-08-21 11:22+0000\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2021-12-31 01:53+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish \n" @@ -13,19 +13,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.17-dev\n" +"X-Generator: Weblate 4.10.1\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Henüz uygulanmadı." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Yeni bir ifade bulundu, ancak bu ve önceki arasında hiç sınırlayıcı yok." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Yeni bir alter işlemi başlamadan önce eksik virgül." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Kategorilenmemiş değiştirme işlemi." @@ -34,34 +38,53 @@ msgstr "Kategorilenmemiş değiştirme işlemi." msgid "%1$d values were expected, but found %2$d." msgstr "%1$d değer beklenmekte, ancak %2$d bulundu." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Açık bir köşeli parantez ardından bir grup değer beklenmekte." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Açık bir köşeli parantez beklenmekte." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." -msgstr "Beklenmedik anahtar kelime." +msgstr "Beklenmeyen anahtar kelime." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" -msgstr "Beklenmedik Büyük/Küçük harf ifadesi sonu" +msgstr "Beklenmeyen CASE ifadesi sonu" + +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE ifadesinin olası kopya kod adı." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "AS'den sonra beklenen ancak var olan bir kod adı " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Bir kodadı daha önce bulundu." -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "AS'den sonra bir kod adı beklenmekte." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -69,150 +92,181 @@ msgstr "" "Bir sembol adı beklenmekte! Ayrılmış bir anahtar kelime ters eğik tırnakları " "olmadan bir sütun adı olarak kullanılamaz." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Bir sembol adı beklenmekte!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Bir virgül ya da kapalı bir köşeli parantez beklenmekte." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Kapalı bir köşeli parantez beklenmekte." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Tanınmayan veri türü." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Bir ifade beklenmekte." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Bir kodadı beklenmekte." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Bir kodadı daha önce bulundu." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." -msgstr "Beklenmedik nokta." - -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Bir ifade beklenmekte." +msgstr "Beklenmeyen nokta." + +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Beklenmeyen belirteç." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Bir karşılık beklenmekte." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Beklenmeyen LOCK ifadesi sonu." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Bu seçenek \"%1$s\" ile çakışıyor." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Tablonun eski adı beklenmekte." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "\"TO\" anahtar kelimesi beklenmekte." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Tablonun yeni adı beklenmekte." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Yeniden adlandırma işlemi beklenmekte." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Eksik ifade." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." -msgstr "Beklenmedik karakter." +msgstr "Beklenmeyen karakter." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Sınırlayıcıdan önce beklenen boşluk(lar)." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Beklenen sınırlayıcı." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Sonlandırma tırnak işareti %1$s beklenmekte." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Değişken adı beklenmekte." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." -msgstr "Beklenmedik ifade başlangıcı." +msgstr "Beklenmeyen ifade başlangıcı." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Tanınmayan ifade türü." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Daha önce hiç işlem başlatılmadı." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Beklenmedik belirteç." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Bu tür yan tümce daha önce ayrıştırıldı." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Tanınmayan anahtar kelime." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "İfade sonundaki anahtar kelime." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." -msgstr "Beklenmedik yan tümce sıralaması." +msgstr "Beklenmeyen yan tümce sıralaması." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Varlığın adı beklenmekte." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Tablo adı beklenmekte." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "En az bir sütun tanımı beklenmekte." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "\"RETURNS\" anahtar kelimesi beklenmekte." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Bu tür yan tümce Çoklu tablo sorgularında geçerli değil." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "hata #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Beklenmeyen LOCK deyimi sonu." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Beklenmeyen anahtar kelime" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "CTE'nin adı beklenmekte." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "AS anahtar kelimesi beklenmekte." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "CTE'nin alt sorgusu beklenmekte." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "WITH CTE'nin beklenmeyen sonu." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Beklenmeyen LOCK ifadesi sonu." + +#~ msgid "error #1" +#~ msgstr "hata #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "kesin hata" +#~ msgid "strict error" +#~ msgstr "kesin hata" diff --git a/locale/tt/LC_MESSAGES/sqlparser.mo b/locale/tt/LC_MESSAGES/sqlparser.mo index ccddedea4..89a3bd1d4 100644 Binary files a/locale/tt/LC_MESSAGES/sqlparser.mo and b/locale/tt/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/tt/LC_MESSAGES/sqlparser.po b/locale/tt/LC_MESSAGES/sqlparser.po index 7ddbd8245..946fdf04a 100644 --- a/locale/tt/LC_MESSAGES/sqlparser.po +++ b/locale/tt/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-10-15 11:22+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Tatar , YEAR. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-06-08 01:43+0000\n" -"Last-Translator: ۋولقان \n" -"Language-Team: Uyghur \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2020-08-03 18:42+0000\n" +"Last-Translator: Abdusalam <1810010207@s.upc.edu.cn>\n" +"Language-Team: Uyghur \n" "Language: ug\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0\n" +"X-Generator: Weblate 4.2-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "تېخى يولغا قويۇلمىدى." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" +"يېڭى بايانات تېپىلدى ، ئەمما ئۇنىڭ بىلەن ئالدىنقىسىنىڭ ئوتتۇرىسىدا ئېنىقلىما " +"يوق." + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "يېڭى ئۆزگەرتىش مەشغۇلاتى باشلىنىشتىن بۇرۇن پەش يوقاپ كەتتى." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." -msgstr "" +msgstr "تونۇلمىغان ئۆزگەرتىش مەشغۇلاتى." #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected after AS." +msgstr "تاللانغىنى:" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "With selected:" msgid "A symbol name was expected!" msgstr "تاللانغىنى:" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "With selected:" msgid "A comma or a closing bracket was expected." msgstr "تاللانغىنى:" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 #, fuzzy #| msgid "With selected:" -msgid "An alias was expected." +msgid "An expression was expected." msgstr "تاللانغىنى:" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected." +msgstr "تاللانغىنى:" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "With selected:" -msgid "An expression was expected." -msgstr "تاللانغىنى:" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK expression." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The bookmark has been deleted." msgid "A rename operation was expected." msgstr "خەتكۈچ ئۆچۈرۈلدى." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "مۇنتىزىم ئىپادە" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Database %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "%1$s ساندان غەلبىلىك قۇرۇلدى" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "Show dimension of tables" msgid "Unexpected beginning of statement." msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "Show dimension of tables" msgid "Keyword at end of statement." msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "Show dimension of tables" msgid "Unexpected ordering of clauses." msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "With selected:" msgid "A table name was expected." msgstr "تاللانغىنى:" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The bookmark has been deleted." msgid "At least one column definition was expected." msgstr "خەتكۈچ ئۆچۈرۈلدى." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "خاتالىق #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK statement." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "With selected:" +msgid "The name of the CTE was expected." +msgstr "تاللانغىنى:" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "With selected:" +msgid "AS keyword was expected." +msgstr "تاللانغىنى:" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "Subquery of the CTE was expected." +msgstr "%1$s ساندان غەلبىلىك قۇرۇلدى" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of the WITH CTE." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#, fuzzy +#~| msgid "Show dimension of tables" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#~ msgid "error #1" +#~ msgstr "خاتالىق #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Query" -msgid "strict error" -msgstr "تەكشۈرۈش" +#~| msgid "Query" +#~ msgid "strict error" +#~ msgstr "تەكشۈرۈش" diff --git a/locale/uk/LC_MESSAGES/sqlparser.mo b/locale/uk/LC_MESSAGES/sqlparser.mo index 05032993a..d9eae9c8f 100644 Binary files a/locale/uk/LC_MESSAGES/sqlparser.mo and b/locale/uk/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/uk/LC_MESSAGES/sqlparser.po b/locale/uk/LC_MESSAGES/sqlparser.po index 16dbd5b7e..8a75ce8f9 100644 --- a/locale/uk/LC_MESSAGES/sqlparser.po +++ b/locale/uk/LC_MESSAGES/sqlparser.po @@ -1,31 +1,35 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2017-08-21 14:47+0000\n" -"Last-Translator: Володимир Бриняк \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.17-dev\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Ще не реалізовано." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "Новий оператор знайдено, але між ним і попереднім немає роздільника." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Відсутня кома перед початком нової операції зміни." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Нерозпізнана операція зміни." @@ -34,34 +38,53 @@ msgstr "Нерозпізнана операція зміни." msgid "%1$d values were expected, but found %2$d." msgstr "Очікувалося %1$d значення, а знайдено %2$d ." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Очікувалося відкриття дужки з набором значень." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Очікувалося відкриття дужки." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Неочікуване ключове слово." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Неочікуваний кінець виразу CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Потенційний повторюваний псевдонім виразу CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Псевдонім очікується після AS, але отримано " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Псевдонім був раніше знайдений." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Псевдонім очікувався після AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -69,150 +92,181 @@ msgstr "" "Очікувалося ім'я ідентифікатора! Зарезервоване ключове слово не може " "використовуватися, як ім'я стовпця, без зворотніх лапок." -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "Очікувалося ім'я ідентифікатора!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Очікувалося, кома або закривна дужка." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Очікувалася закривна дужка." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Нерозпізнаний тип даних." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Очікувався оператор." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Очікувався псевдонім." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Псевдонім був раніше знайдений." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Неочікувана крапка." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Очікувався оператор." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Неочікуваний маркер." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Очікувалося зміщення." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Неочікуваний кінець виразу LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Цей параметр конфліктує з \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Очікувалося стара назва таблиці." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Очікувалося ключове слово \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Очікувалося нове ім'я таблиці." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Очікувалася операція перейменування." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Відсутній оператор." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Неочікуваний символ." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Очікувалося пробіл(и) перед роздільником." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Очікувалося роздільник." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Очікувалося закриваюча лапка %1$s ." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Очікувалося ім'я змінної." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Неочікуваний початок виразу оператора." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Нерозпізнаний тип оператора." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Жодна транзакція не була раніше запущена." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Неочікуваний маркер." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Цей тип оператора був раніше проаналізований." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Нерозпізнане ключове слово." -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "Ключове слово в кінці виразу." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Неочікуваний порядок операторів." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Очікувалося ім'я об'єкта." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "Очікувалося ім'я таблиці." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Очікувалося, принаймні одне визначення стовпчика." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Очікувалося ключове слово \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Цей тип оператора не діє для запитів групових таблиць." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "помилка #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "Несподіваний кінець оператора LOCK." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Неочікуване ключове слово" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "Очікувалося ім'я CTE." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Очікувалося ключове слово \"AS\"." + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "Очікувався підзапит CTE." + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "Несподіваний кінець WITH CTE." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Несподіваний кінець виразу LOCK." + +#~ msgid "error #1" +#~ msgstr "помилка #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "недопустима помилка" +#~ msgid "strict error" +#~ msgstr "недопустима помилка" diff --git a/locale/ur/LC_MESSAGES/sqlparser.mo b/locale/ur/LC_MESSAGES/sqlparser.mo index 81aea0bb4..06eed778d 100644 Binary files a/locale/ur/LC_MESSAGES/sqlparser.mo and b/locale/ur/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/ur/LC_MESSAGES/sqlparser.po b/locale/ur/LC_MESSAGES/sqlparser.po index e13b4a64d..6d716338a 100644 --- a/locale/ur/LC_MESSAGES/sqlparser.po +++ b/locale/ur/LC_MESSAGES/sqlparser.po @@ -4,30 +4,34 @@ # FIRST AUTHOR , YEAR. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2015-10-15 11:05+0200\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: Urdu \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-03-28 13:56+0000\n" +"Last-Translator: Aatir Farooqui \n" +"Language-Team: Urdu \n" "Language: ur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 2.5-dev\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." -msgstr "" +msgstr "ابھی تک نافذ نہیں ہوا۔" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." -msgstr "" +msgstr "ایک نیا بیان ملا، لیکن اس اور پچھلے بیان کے درمیان کوئی حد بندی نہیں۔" + +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "ایک نیا الٹر آپریشن شروع کرنے سے پہلے کوما غائب ہے۔" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:472 #, fuzzy #| msgid "Iconic table operations" msgid "Unrecognized alter operation." @@ -36,214 +40,280 @@ msgstr "شبیہاتی جدول عملیات" #: src/Components/Array2d.php:88 #, php-format msgid "%1$d values were expected, but found %2$d." -msgstr "" +msgstr "%1$d قدریں متوقع تھیں، لیکن %2$d ملیں۔" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." -msgstr "" +msgstr "ایک افتتاحی خط وحدانی جس کے بعد اقدار کا ایک سیٹ متوقع تھا۔" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "Removing Selected Users" +msgid "An alias was expected after AS." +msgstr "منتخب صارفین حذف کیے جا رہے ہیں" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "Table name template" msgid "A symbol name was expected!" msgstr "جدول نام سانچا" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "Removing Selected Users" msgid "A comma or a closing bracket was expected." msgstr "منتخب صارفین حذف کیے جا رہے ہیں" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 #, fuzzy #| msgid "Removing Selected Users" -msgid "An alias was expected." +msgid "An expression was expected." msgstr "منتخب صارفین حذف کیے جا رہے ہیں" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" +#: src/Components/Expression.php:257 src/Components/Expression.php:435 +#, fuzzy +#| msgid "Removing Selected Users" +msgid "An alias was expected." +msgstr "منتخب صارفین حذف کیے جا رہے ہیں" -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "Removing Selected Users" -msgid "An expression was expected." -msgstr "منتخب صارفین حذف کیے جا رہے ہیں" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK expression." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The bookmark has been deleted." msgid "A rename operation was expected." msgstr "نشانی حذف ہو چکی ہے۔" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "بطور باقاعدہ اظہار" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Database %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "کوائفیہ $1%s بن گئی ہے۔" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "جدول نام سانچا" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "Show dimension of tables" msgid "Unexpected beginning of statement." msgstr "ٹیبلز کی جسامت دیکھیں" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "Show dimension of tables" msgid "Keyword at end of statement." msgstr "ٹیبلز کی جسامت دیکھیں" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "Show dimension of tables" msgid "Unexpected ordering of clauses." msgstr "ٹیبلز کی جسامت دیکھیں" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "جدول نام سانچا" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The bookmark has been deleted." msgid "At least one column definition was expected." msgstr "نشانی حذف ہو چکی ہے۔" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK statement." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "Table name template" +msgid "The name of the CTE was expected." +msgstr "جدول نام سانچا" + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "Removing Selected Users" +msgid "AS keyword was expected." +msgstr "منتخب صارفین حذف کیے جا رہے ہیں" + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "Subquery of the CTE was expected." +msgstr "کوائفیہ $1%s بن گئی ہے۔" + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of the WITH CTE." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#, fuzzy +#~| msgid "Show dimension of tables" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "ٹیبلز کی جسامت دیکھیں" + #, fuzzy -#| msgid "Error" -msgid "error #1" -msgstr "نقص" +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "نقص" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Gather errors" -msgid "strict error" -msgstr "نقائص اکھٹی کریں" +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "نقائص اکھٹی کریں" diff --git a/locale/uz/LC_MESSAGES/sqlparser.mo b/locale/uz/LC_MESSAGES/sqlparser.mo index 9f13bd44d..bf68fbd85 100644 Binary files a/locale/uz/LC_MESSAGES/sqlparser.mo and b/locale/uz/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/uz/LC_MESSAGES/sqlparser.po b/locale/uz/LC_MESSAGES/sqlparser.po index ebf27bed6..1cc7c737e 100644 --- a/locale/uz/LC_MESSAGES/sqlparser.po +++ b/locale/uz/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-10-15 11:39+0200\n" "Last-Translator: Michal Čihař \n" "Language-Team: Uzbek 1);\n" "X-Generator: Weblate 2.5-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:472 #, fuzzy #| msgid "Iconic table operations" msgid "Unrecognized alter operation." @@ -35,218 +39,284 @@ msgstr "Жадвал операцияларини пиктограммалар msgid "%1$d values were expected, but found %2$d." msgstr "" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:252 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Биронта ҳам маълумотлар базаси танланмаган." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 #, fuzzy #| msgid "Table name template" msgid "A symbol name was expected!" msgstr "Жадвал номи шаблони" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 #, fuzzy #| msgid "No databases selected." msgid "A comma or a closing bracket was expected." msgstr "Биронта ҳам маълумотлар базаси танланмаган." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Амални амалга ошириш учун битта ёки бир нечта қаторни танлаш керак." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 #, fuzzy #| msgid "No databases selected." msgid "An alias was expected." msgstr "Биронта ҳам маълумотлар базаси танланмаган." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "" -#: src/Components/ExpressionArray.php:102 -#, fuzzy -#| msgid "No rows selected" -msgid "An expression was expected." -msgstr "Амални амалга ошириш учун битта ёки бир нечта қаторни танлаш керак." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Жадвал бошига" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 #, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." msgstr "Очиқ жадваллар сони." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 #, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." msgstr "Очиқ жадваллар сони." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 #, fuzzy #| msgid "The row has been deleted." msgid "A rename operation was expected." msgstr "Ёзув ўчирилди" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 #, fuzzy #| msgid "as regular expression" msgid "Missing expression." msgstr "мунтазам ибора" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, fuzzy, php-format #| msgid "Table %1$s has been created." msgid "Ending quote %1$s was expected." msgstr "%1$s жадвали тузилди." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 #, fuzzy #| msgid "Table name template" msgid "Variable name was expected." msgstr "Жадвал номи шаблони" -#: src/Parser.php:423 +#: src/Parser.php:456 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." msgstr "Жадвал бошига" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "" -#: src/Statement.php:377 +#: src/Statement.php:409 #, fuzzy #| msgid "At Beginning of Table" msgid "Keyword at end of statement." msgstr "Жадвал бошига" -#: src/Statement.php:503 +#: src/Statement.php:555 #, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected ordering of clauses." msgstr "Жадвал бошига" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 #, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." msgstr "Очиқ жадваллар сони." -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 #, fuzzy #| msgid "Table name template" msgid "A table name was expected." msgstr "Жадвал номи шаблони" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 #, fuzzy #| msgid "The row has been deleted." msgid "At least one column definition was expected." msgstr "Ёзув ўчирилди" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Жадвал бошига" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the CTE was expected." +msgstr "Очиқ жадваллар сони." + +#: src/Statements/WithStatement.php:137 +#, fuzzy +#| msgid "No rows selected" +msgid "AS keyword was expected." +msgstr "Амални амалга ошириш учун битта ёки бир нечта қаторни танлаш керак." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "Subquery of the CTE was expected." +msgstr "Очиқ жадваллар сони." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of the WITH CTE." +msgstr "Жадвал бошига" + +#, fuzzy +#~| msgid "At Beginning of Table" +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Жадвал бошига" + #, fuzzy -#| msgid "errors." -msgid "error #1" -msgstr "хатоликлар." +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "хатоликлар." -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 #, fuzzy -#| msgid "Ignore errors" -msgid "strict error" -msgstr "Хатоларга эътибор бермаслик" +#~| msgid "Ignore errors" +#~ msgid "strict error" +#~ msgstr "Хатоларга эътибор бермаслик" diff --git a/locale/uz@latin/LC_MESSAGES/sqlparser.mo b/locale/uz@latin/LC_MESSAGES/sqlparser.mo index ddb2b4043..471dd56cc 100644 Binary files a/locale/uz@latin/LC_MESSAGES/sqlparser.mo and b/locale/uz@latin/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/uz@latin/LC_MESSAGES/sqlparser.po b/locale/uz@latin/LC_MESSAGES/sqlparser.po index 90dccefc9..ffdb15b57 100644 --- a/locale/uz@latin/LC_MESSAGES/sqlparser.po +++ b/locale/uz@latin/LC_MESSAGES/sqlparser.po @@ -1,9 +1,9 @@ # Automatically generated <>, 2010. msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2015-12-29 19:19+0000\n" "Last-Translator: Michal Čihař \n" "Language-Team: Uzbek (latin) \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2025-03-22 07:14+0000\n" +"Last-Translator: hoanghuy309 \n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -18,19 +18,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.1-dev\n" +"X-Generator: Weblate 5.11-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "Chưa được viết mã thực thi." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "" "Tìm thấy câu lệnh mới, nhưng không có dấu ngăn cách giữa nó và lệnh trước." -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "Thiếu dấu phẩy trước khi bắt đầu thao tác thay đổi mới." + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "Không nhận ra thao tác thay đổi." @@ -39,34 +43,53 @@ msgstr "Không nhận ra thao tác thay đổi." msgid "%1$d values were expected, but found %2$d." msgstr "Cần giá trị %1$d, nhưng lại nhận được %2$d." -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "Cần một dấu ngoặc ôm mở theo sau bởi một tập hợp các giá trị." -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "Cần dấu ngoặc ôm mở." -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "Từ khóa không mong muốn." -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "Kết thúc bất ngờ của biểu thức CASE" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "Khả năng trùng lặp tên của các biểu thức CASE." + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "Một bí danh được mong đợi sau AS nhưng có " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "Một bí danh đã tìm thấy từ trước đây." + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "Một bí danh đã được mong đợi sau AS." + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." @@ -74,156 +97,189 @@ msgstr "" "Cần tên biểu tượng. Một từ khoá truy ngược không thể được sử dụng như là một " "tên cột mà không có các ngoặc sau." -#: src/Components/CreateDefinition.php:237 -#, fuzzy -#| msgid "Variable name was expected." +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" -msgstr "Cần tên biến." +msgstr "Cần tên biểu tượng!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "Cần dấu phẩy hoặc dấu ngoặc ôm đóng." -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "Cần dấu ngoặc ôm đóng." -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "Không nhận ra kiểu dữ liệu." -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "Cần một biểu thức." + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "Cần một bí danh." -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "Một bí danh đã tìm thấy từ trước đây." - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "Gặp dấu chấm không cần." -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "Cần một biểu thức." +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "Gặp thẻ bài không cần." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "Cần vị trí tương đối." -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "Kết thúc bất ngờ của biểu thức LOCK." + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "Tùy chọn này xung đột với \"%1$s\"." -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "Cần tên cũ của bảng." -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "Cần từ khóa \"TO\"." -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "Cần tên mới của bảng." -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "Cần thao tác đổi tên." -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "Thiếu biểu thức chính quy." -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "Gặp ký tự không cần." -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "Cần các khoảng trắng trước dấu phân tách." -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "Cần dấu phân tách." -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "Cần trích dẫn đóng %1$s." -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "Cần tên biến." -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "Gặp phần đầu mệnh đề không cần." -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "Không thừa nhận kiểu mệnh đề." -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "Chưa có giao địch nào đã bắt đầu trước đây." -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "Gặp thẻ bài không cần." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "Kiểu của mệnh đề này đã được phân tích trước đây." -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "Không nhận ra từ khóa." -#: src/Statement.php:377 -#, fuzzy -#| msgid "Unexpected beginning of statement." +#: src/Statement.php:409 msgid "Keyword at end of statement." -msgstr "Gặp phần đầu mệnh đề không cần." +msgstr "Từ khóa ở cuối mệnh đề." -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "Đặt mệnh đề không mong muốn." -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "Cần tên của thực thể." -#: src/Statements/CreateStatement.php:430 -#, fuzzy -#| msgid "Variable name was expected." +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." -msgstr "Cần tên biến." +msgstr "Cần một tên bảng." -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "Chưa có bảng nào được chọn." -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "Cần từ khóa \"RETURNS\"." -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "Mệnh đề loại này không hợp lệ trong các truy vấn Đa bảng." -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "lỗi #1" +#: src/Statements/LockStatement.php:120 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Gặp phần đầu mệnh đề không cần." + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "Từ khóa không mong muốn" + +#: src/Statements/WithStatement.php:118 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "The name of the CTE was expected." +msgstr "Cần tên của thực thể." + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "Cần từ khóa AS." + +#: src/Statements/WithStatement.php:149 +#, fuzzy +#| msgid "The name of the entity was expected." +msgid "Subquery of the CTE was expected." +msgstr "Cần tên của thực thể." + +#: src/Statements/WithStatement.php:266 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of the WITH CTE." +msgstr "Gặp phần đầu mệnh đề không cần." + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "Kết thúc bất ngờ của biểu thức LOCK." + +#~ msgid "error #1" +#~ msgstr "lỗi #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "lỗi nghiêm ngặt" +#~ msgid "strict error" +#~ msgstr "lỗi nghiêm ngặt" diff --git a/locale/vls/LC_MESSAGES/sqlparser.mo b/locale/vls/LC_MESSAGES/sqlparser.mo index 30fcbed12..100f85ed3 100644 Binary files a/locale/vls/LC_MESSAGES/sqlparser.mo and b/locale/vls/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/vls/LC_MESSAGES/sqlparser.po b/locale/vls/LC_MESSAGES/sqlparser.po index e4f371502..8fbb4a23d 100644 --- a/locale/vls/LC_MESSAGES/sqlparser.po +++ b/locale/vls/LC_MESSAGES/sqlparser.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" "PO-Revision-Date: 2014-12-23 23:39+0200\n" "Last-Translator: Robin van der Vliet \n" "Language-Team: West Flemish \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2023-01-26 07:10+0000\n" +"Last-Translator: liviuconcioiu \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -13,18 +13,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.1.1\n" +"X-Generator: Weblate 4.16-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "还未实现." -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "发现了一个新的声明,但它与前一声明之间没有分隔符。" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "在新的 alter 操作之前缺少逗号。" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "无法识别的变更(alter)操作。" @@ -33,183 +37,233 @@ msgstr "无法识别的变更(alter)操作。" msgid "%1$d values were expected, but found %2$d." msgstr "应有%1$d个值,但查找到了%2$d个。" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "应该有一个开头括号后面跟着一组值。" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "应该有一个左括号。" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "不应出现的关键词。" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "CASE表达式意外结束" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE表达式有潜在的重复别名。" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "AS关键字后应跟随别名,但是发现 " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "之前发现了一个别名。" + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "AS关键字后应跟随别名。" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "应该有一个符号名称!保留的关键字不能用作没有反引号的列名。" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "应该有一个符号名称!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "应该是有逗号或结束括号。" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "应有一个右括号。" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "无法识别的数据类型。" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "应该为一个表达式。" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "应该有一个别名。" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "之前发现了一个别名。" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "不应出现的点。" -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "应该为一个表达式。" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "意外的标记." -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "应该为一个偏移。" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK表达式意外结束。" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "此选项与“%1$s”冲突。" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "需要有表的旧名称。" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "应为关键词“TO”。" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "应有表的新名称。" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "应进行重命名操作。" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "缺少正则表达式。" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "缺少字符。" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "分隔符之前应有空格。" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "应有分隔符。" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "应有结束引号 %1$s。" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "应有变量名。" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "不应出现的开始声明。" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "无法识别的声明形式。" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "之前没有开始任何事务。" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "意外的标记." - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "之前已解析此类型的子句。" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "不能识别的关键词。" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "声明结尾处的关键字。" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "错误的语句顺序。" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "应有该实体的名称。" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "应有表名。" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "至少应有一个字段定义。" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "应有“RETURNS”关键字。" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "此类型的子句在多表查询中无效。" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "错误 #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK语句意外结束。" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "不应出现的关键词" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "应该有CTE的名字。" + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "应有“AS”关键字。" + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "应为CTE的子查询。" + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "CTE语句意外结束。" + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "LOCK表达式意外结束。" + +#~ msgid "error #1" +#~ msgstr "错误 #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "严格错误" +#~ msgid "strict error" +#~ msgstr "严格错误" diff --git a/locale/zh_TW/LC_MESSAGES/sqlparser.mo b/locale/zh_TW/LC_MESSAGES/sqlparser.mo index ebe8e5ca8..a8882062c 100644 Binary files a/locale/zh_TW/LC_MESSAGES/sqlparser.mo and b/locale/zh_TW/LC_MESSAGES/sqlparser.mo differ diff --git a/locale/zh_TW/LC_MESSAGES/sqlparser.po b/locale/zh_TW/LC_MESSAGES/sqlparser.po index 61bbf5e6f..5d8187d42 100644 --- a/locale/zh_TW/LC_MESSAGES/sqlparser.po +++ b/locale/zh_TW/LC_MESSAGES/sqlparser.po @@ -1,11 +1,11 @@ # msgid "" msgstr "" -"Project-Id-Version: SQL parser 0\n" +"Project-Id-Version: SQL parser 5\n" "Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" -"POT-Creation-Date: 2017-08-21 12:54+0200\n" -"PO-Revision-Date: 2018-11-29 06:08+0000\n" -"Last-Translator: Walter Cheuk \n" +"POT-Creation-Date: 2023-02-26 22:46+0100\n" +"PO-Revision-Date: 2024-06-14 13:09+0000\n" +"Last-Translator: Ricky From Hong Kong \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_TW\n" @@ -13,18 +13,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.3-dev\n" +"X-Generator: Weblate 5.6-dev\n" -#: src/Component.php:43 src/Component.php:63 +#: src/Component.php:39 src/Component.php:59 msgid "Not implemented yet." msgstr "尚未實作。" -#: src/Components/AlterOperation.php:241 src/Statement.php:334 +#: src/Components/AlterOperation.php:415 src/Statement.php:359 msgid "" "A new statement was found, but no delimiter between it and the previous one." msgstr "找到新的陳述句,但與前一陳述句之間沒有分隔符。" -#: src/Components/AlterOperation.php:253 +#: src/Components/AlterOperation.php:427 +msgid "Missing comma before start of a new alter operation." +msgstr "在開始一個新的操作前缺少逗號。" + +#: src/Components/AlterOperation.php:472 msgid "Unrecognized alter operation." msgstr "無法識別的修改操作。" @@ -33,183 +37,233 @@ msgstr "無法識別的修改操作。" msgid "%1$d values were expected, but found %2$d." msgstr "預期 %1$d 個數值,但找到 %2$d 個。" -#: src/Components/Array2d.php:111 +#: src/Components/Array2d.php:108 msgid "An opening bracket followed by a set of values was expected." msgstr "預期開括號後有一組數值。" -#: src/Components/ArrayObj.php:114 src/Components/CreateDefinition.php:201 +#: src/Components/ArrayObj.php:106 src/Components/CreateDefinition.php:233 msgid "An opening bracket was expected." msgstr "預期要有開始括號。" -#: src/Components/CaseExpression.php:135 src/Components/CaseExpression.php:164 -#: src/Components/CaseExpression.php:176 src/Components/CaseExpression.php:190 -#: src/Statements/DeleteStatement.php:227 -#: src/Statements/DeleteStatement.php:244 -#: src/Statements/DeleteStatement.php:292 -#: src/Statements/DeleteStatement.php:303 -#: src/Statements/DeleteStatement.php:333 -#: src/Statements/DeleteStatement.php:344 +#: src/Components/CaseExpression.php:133 src/Components/CaseExpression.php:161 +#: src/Components/CaseExpression.php:172 src/Components/CaseExpression.php:184 +#: src/Components/IndexHint.php:134 src/Components/IndexHint.php:164 +#: src/Components/LockExpression.php:173 src/Components/LockExpression.php:180 +#: src/Components/LockExpression.php:188 src/Statements/DeleteStatement.php:249 +#: src/Statements/DeleteStatement.php:268 +#: src/Statements/DeleteStatement.php:308 +#: src/Statements/DeleteStatement.php:320 +#: src/Statements/DeleteStatement.php:346 +#: src/Statements/DeleteStatement.php:353 #: src/Statements/InsertStatement.php:189 -#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:258 -#: src/Statements/ReplaceStatement.php:155 -#: src/Statements/ReplaceStatement.php:182 +#: src/Statements/InsertStatement.php:220 src/Statements/LoadStatement.php:265 +#: src/Statements/LockStatement.php:85 src/Statements/ReplaceStatement.php:149 +#: src/Statements/ReplaceStatement.php:178 msgid "Unexpected keyword." msgstr "預期之外的關鍵字。" -#: src/Components/CaseExpression.php:199 +#: src/Components/CaseExpression.php:192 msgid "Unexpected end of CASE expression" msgstr "預期之外的CASE陳述式" -#: src/Components/CreateDefinition.php:223 +#: src/Components/CaseExpression.php:212 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE 表達式可能重複的別名。" + +#: src/Components/CaseExpression.php:225 +msgid "An alias expected after AS but got " +msgstr "別名應出現在 AS 之後,但得到 " + +#: src/Components/CaseExpression.php:238 src/Components/Expression.php:352 +#: src/Components/Expression.php:372 src/Components/Expression.php:424 +msgid "An alias was previously found." +msgstr "已於前面找到別名。" + +#: src/Components/CaseExpression.php:252 +msgid "An alias was expected after AS." +msgstr "在 AS 之後預期要有別名。" + +#: src/Components/CreateDefinition.php:255 msgid "" "A symbol name was expected! A reserved keyword can not be used as a column " "name without backquotes." msgstr "預期有一個符號!保留字不可以在沒有反引號時用作欄位名稱。" -#: src/Components/CreateDefinition.php:237 +#: src/Components/CreateDefinition.php:268 msgid "A symbol name was expected!" msgstr "預期要有符號名稱!" -#: src/Components/CreateDefinition.php:270 +#: src/Components/CreateDefinition.php:300 msgid "A comma or a closing bracket was expected." msgstr "預期要有逗號或者結束括號。" -#: src/Components/CreateDefinition.php:286 +#: src/Components/CreateDefinition.php:313 src/Statements/WithStatement.php:328 msgid "A closing bracket was expected." msgstr "預期要有結束括號。" -#: src/Components/DataType.php:123 +#: src/Components/DataType.php:130 msgid "Unrecognized data type." msgstr "無法識別的資料類型。" -#: src/Components/Expression.php:244 src/Components/Expression.php:394 +#: src/Components/ExpressionArray.php:106 src/Statements/WithStatement.php:197 +msgid "An expression was expected." +msgstr "預期要有表示式。" + +#: src/Components/Expression.php:257 src/Components/Expression.php:435 msgid "An alias was expected." msgstr "預期要有別名。" -#: src/Components/Expression.php:332 src/Components/Expression.php:351 -#: src/Components/Expression.php:383 -msgid "An alias was previously found." -msgstr "已於前面找到別名。" - -#: src/Components/Expression.php:364 +#: src/Components/Expression.php:403 msgid "Unexpected dot." msgstr "預期之外的句點。" -#: src/Components/ExpressionArray.php:102 -msgid "An expression was expected." -msgstr "預期要有表示式。" +#: src/Components/IndexHint.php:140 src/Components/IndexHint.php:170 +#: src/Components/Key.php:259 src/Components/LockExpression.php:161 +#: src/Components/SetOperation.php:138 src/Statement.php:258 +#: src/Statements/DeleteStatement.php:263 +#: src/Statements/DeleteStatement.php:315 +#: src/Statements/ExplainStatement.php:161 +#: src/Statements/InsertStatement.php:203 +#: src/Statements/InsertStatement.php:240 src/Statements/LoadStatement.php:270 +#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:100 +#: src/Statements/PurgeStatement.php:106 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:140 +#: src/Statements/ReplaceStatement.php:163 src/Statements/WithStatement.php:132 +msgid "Unexpected token." +msgstr "預期之外的符號。" -#: src/Components/Limit.php:86 src/Components/Limit.php:108 +#: src/Components/Limit.php:78 src/Components/Limit.php:105 msgid "An offset was expected." msgstr "預期要有偏移量(Offset)。" -#: src/Components/OptionsArray.php:143 +#: src/Components/LockExpression.php:91 src/Components/LockExpression.php:201 +msgid "Unexpected end of LOCK expression." +msgstr "預期之外的LOCK陳述式。" + +#: src/Components/OptionsArray.php:146 #, php-format msgid "This option conflicts with \"%1$s\"." msgstr "此選項與 \"%1$s\" 發生衝突。" -#: src/Components/RenameOperation.php:109 +#: src/Components/RenameOperation.php:103 msgid "The old name of the table was expected." msgstr "預期要有舊的資料表名稱。" -#: src/Components/RenameOperation.php:119 +#: src/Components/RenameOperation.php:109 msgid "Keyword \"TO\" was expected." msgstr "預期要有 \"TO\" 關鍵字。" -#: src/Components/RenameOperation.php:135 +#: src/Components/RenameOperation.php:124 msgid "The new name of the table was expected." msgstr "預期要有新的資料表名稱。" -#: src/Components/RenameOperation.php:153 +#: src/Components/RenameOperation.php:140 msgid "A rename operation was expected." msgstr "預期要有重新命名的操作。" -#: src/Components/SetOperation.php:117 +#: src/Components/SetOperation.php:121 msgid "Missing expression." msgstr "缺少表達式。" -#: src/Lexer.php:237 +#: src/Lexer.php:274 msgid "Unexpected character." msgstr "預期之外的字元。" -#: src/Lexer.php:278 +#: src/Lexer.php:313 msgid "Expected whitespace(s) before delimiter." msgstr "預期要有空白於分隔符號之前。" -#: src/Lexer.php:296 src/Lexer.php:314 +#: src/Lexer.php:329 src/Lexer.php:348 msgid "Expected delimiter." msgstr "預期要有分隔符號。" -#: src/Lexer.php:843 +#: src/Lexer.php:1004 #, php-format msgid "Ending quote %1$s was expected." msgstr "預期要於結束使用括號 %1$s。" -#: src/Lexer.php:884 +#: src/Lexer.php:1056 msgid "Variable name was expected." msgstr "預期要有變數名稱。" -#: src/Parser.php:423 +#: src/Parser.php:456 msgid "Unexpected beginning of statement." msgstr "預期之外的陳述句開頭。" -#: src/Parser.php:442 +#: src/Parser.php:499 msgid "Unrecognized statement type." msgstr "無法辨識的陳述句類型。" -#: src/Parser.php:527 +#: src/Parser.php:587 msgid "No transaction was previously started." msgstr "前面未開啟交易(Transaction)模式。" -#: src/Statement.php:242 src/Statements/DeleteStatement.php:254 -#: src/Statements/DeleteStatement.php:306 -#: src/Statements/InsertStatement.php:226 -#: src/Statements/InsertStatement.php:246 src/Statements/LoadStatement.php:261 -#: src/Statements/LoadStatement.php:291 src/Statements/LoadStatement.php:310 -#: src/Statements/ReplaceStatement.php:190 -msgid "Unexpected token." -msgstr "預期之外的符號。" - -#: src/Statement.php:306 +#: src/Statement.php:327 msgid "This type of clause was previously parsed." msgstr "此類型的子句已於前面解析過。" -#: src/Statement.php:366 +#: src/Statement.php:398 msgid "Unrecognized keyword." msgstr "無法辨識的關鍵字。" -#: src/Statement.php:377 +#: src/Statement.php:409 msgid "Keyword at end of statement." msgstr "陳述句結尾的關鍵字。" -#: src/Statement.php:503 +#: src/Statement.php:555 msgid "Unexpected ordering of clauses." msgstr "預期之外的排序語句。" -#: src/Statements/CreateStatement.php:375 +#: src/Statements/CreateStatement.php:549 msgid "The name of the entity was expected." msgstr "預期要有實體名稱。" -#: src/Statements/CreateStatement.php:430 +#: src/Statements/CreateStatement.php:598 msgid "A table name was expected." msgstr "預期有表格名稱。" -#: src/Statements/CreateStatement.php:438 +#: src/Statements/CreateStatement.php:603 msgid "At least one column definition was expected." msgstr "預期要至少一個欄位定義。" -#: src/Statements/CreateStatement.php:550 +#: src/Statements/CreateStatement.php:707 msgid "A \"RETURNS\" keyword was expected." msgstr "預期要使用 \"RETURNS\" 關鍵字。" -#: src/Statements/DeleteStatement.php:314 +#: src/Statements/DeleteStatement.php:329 msgid "This type of clause is not valid in Multi-table queries." msgstr "此類型的子句不可用於多表查詢。" -#: tests/Lexer/LexerTest.php:19 tests/Parser/ParserTest.php:58 -msgid "error #1" -msgstr "錯誤 #1" +#: src/Statements/LockStatement.php:120 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK 語句意外結束。" + +#: src/Statements/PurgeStatement.php:138 +msgid "Unexpected keyword" +msgstr "預期之外的關鍵字" + +#: src/Statements/WithStatement.php:118 +msgid "The name of the CTE was expected." +msgstr "預期常用資料表句式(CTE)要有名稱。" + +#: src/Statements/WithStatement.php:137 +msgid "AS keyword was expected." +msgstr "預期要使用 \"AS\" 關鍵字。" + +#: src/Statements/WithStatement.php:149 +msgid "Subquery of the CTE was expected." +msgstr "預期常用資料表句式(CTE)要有子查詢。" + +#: src/Statements/WithStatement.php:266 +msgid "Unexpected end of the WITH CTE." +msgstr "常用資料表句式(CTE)的“WITH”預期之外結束。" + +#~ msgid "Unexpected end of Lock expression." +#~ msgstr "預期之外的LOCK陳述式。" + +#~ msgid "error #1" +#~ msgstr "錯誤 #1" -#: tests/Lexer/LexerTest.php:46 tests/Parser/ParserTest.php:80 -msgid "strict error" -msgstr "嚴謹錯誤" +#~ msgid "strict error" +#~ msgstr "嚴謹錯誤" diff --git a/phpbench.json b/phpbench.json new file mode 100644 index 000000000..d2d14113a --- /dev/null +++ b/phpbench.json @@ -0,0 +1,4 @@ +{ + "$schema": "./vendor/phpbench/phpbench/phpbench.schema.json", + "runner.bootstrap": "vendor/autoload.php" +} diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 81b5c0c66..0d89215e4 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -1,39 +1,34 @@ - - - - - - - - - */src/Contexts/* - + + + - - 4 - - - 4 - - - 4 - - - 4 - - - + - */tools/sami-config.php - src tests tools + + tools/doctum-config.php + + + + + src/Contexts/* + + + + + + + + + + + + src/Contexts/* + tests/Tools/templates/* + diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 000000000..cc7bb2643 --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,2906 @@ +parameters: + ignoreErrors: + - + message: '#^Cannot call method has\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 2 + path: src/Components/AlterOperation.php + + - + message: '#^Cannot call method remove\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 3 + path: src/Components/AlterOperation.php + + - + message: '#^Cannot clone PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: clone.nonObject + count: 1 + path: src/Components/AlterOperation.php + + - + message: '#^Only booleans are allowed in an if condition, string\|null given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Components/CaseExpression.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 3 + path: src/Components/CreateDefinition.php + + - + message: '#^Only booleans are allowed in an if condition, bool\|null given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Components/CreateDefinition.php + + - + message: '#^Parameter \#1 \$string of function strtolower expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Components/DataType.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Components/Expression.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Components/IntoKeyword.php + + - + message: '#^Only booleans are allowed in a ternary operator condition, bool\|null given\.$#' + identifier: ternary.condNotBoolean + count: 1 + path: src/Components/IntoKeyword.php + + - + message: '#^Call to function array_search\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 1 + path: src/Components/JoinKeyword.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Components/JoinKeyword.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Components/Key.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\OptionsArray\:\:\$options \(array\\) does not accept array\.$#' + identifier: assign.propertyType + count: 1 + path: src/Components/OptionsArray.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Components/ParameterDefinition.php + + - + message: '#^Parameter \#1 \$str of static method PhpMyAdmin\\SqlParser\\Context\:\:escape\(\) expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Components/ParameterDefinition.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 4 + path: src/Components/PartitionDefinition.php + + - + message: '#^Only booleans are allowed in an if condition, bool\|null given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Components/PartitionDefinition.php + + - + message: '#^Only booleans are allowed in an if condition, array\ given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Components/WithKeyword.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Context.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 1073741824\> given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 1 + path: src/Context.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 2\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Context.php + + - + message: '#^Only booleans are allowed in an if condition, int\<0, 2\> given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Context.php + + - + message: '#^Only booleans are allowed in \|\|, int\|null given on the left side\.$#' + identifier: booleanOr.leftNotBoolean + count: 1 + path: src/Context.php + + - + message: '#^Static property PhpMyAdmin\\SqlParser\\Context\:\:\$keywords \(non\-empty\-array\\) does not accept default value of type array\{\}\.$#' + identifier: property.defaultValue + count: 1 + path: src/Context.php + + - + message: '#^Static property PhpMyAdmin\\SqlParser\\Context\:\:\$keywords \(non\-empty\-array\\) does not accept mixed\.$#' + identifier: assign.propertyType + count: 1 + path: src/Context.php + + - + message: '#^Binary operation "\." between mixed and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 2 + path: src/Lexer.php + + - + message: '#^Binary operation "\." between string and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 2 + path: src/Lexer.php + + - + message: '#^Binary operation "\.\=" between mixed and mixed results in an error\.$#' + identifier: assignOp.invalid + count: 9 + path: src/Lexer.php + + - + message: '#^Binary operation "\.\=" between mixed and string results in an error\.$#' + identifier: assignOp.invalid + count: 2 + path: src/Lexer.php + + - + message: '#^Binary operation "\.\=" between string and mixed results in an error\.$#' + identifier: assignOp.invalid + count: 11 + path: src/Lexer.php + + - + message: '#^Cannot access property \$type on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 2 + path: src/Lexer.php + + - + message: '#^Cannot access property \$value on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 3 + path: src/Lexer.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Lexer.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 1\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Lexer.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Lexer.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 16\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Lexer.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\|null given\.$#' + identifier: booleanNot.exprNotBoolean + count: 2 + path: src/Lexer.php + + - + message: '#^Only booleans are allowed in an elseif condition, int\<0, 16\> given\.$#' + identifier: elseif.condNotBoolean + count: 1 + path: src/Lexer.php + + - + message: '#^Only booleans are allowed in an if condition, int\<0, 1\> given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Lexer.php + + - + message: '#^Parameter \#1 \$character of static method PhpMyAdmin\\SqlParser\\Context\:\:isString\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: src/Lexer.php + + - + message: '#^Parameter \#1 \$character of static method PhpMyAdmin\\SqlParser\\Context\:\:isSymbol\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: src/Lexer.php + + - + message: '#^Parameter \#1 \$character of static method PhpMyAdmin\\SqlParser\\Context\:\:isWhitespace\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 5 + path: src/Lexer.php + + - + message: '#^Parameter \#1 \$string of static method PhpMyAdmin\\SqlParser\\Context\:\:isComment\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: src/Lexer.php + + - + message: '#^Parameter \#1 \$string of static method PhpMyAdmin\\SqlParser\\Context\:\:isSeparator\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 4 + path: src/Lexer.php + + - + message: '#^Parameter \#1 \$token of class PhpMyAdmin\\SqlParser\\Token constructor expects string, mixed given\.$#' + identifier: argument.type + count: 7 + path: src/Lexer.php + + - + message: '#^Parameter \#2 \$str of method PhpMyAdmin\\SqlParser\\Lexer\:\:error\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: src/Lexer.php + + - + message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: src/Lexer.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Token\:\:\$keyword \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Lexer.php + + - + message: '#^Strict comparison using \=\=\= between non\-empty\-array\ and array\{\} will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: src/Lexer.php + + - + message: '#^Cannot access property \$count on PhpMyAdmin\\SqlParser\\TokensList\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Parser.php + + - + message: '#^Cannot access property \$first on mixed\.$#' + identifier: property.nonObject + count: 1 + path: src/Parser.php + + - + message: '#^Cannot access property \$idx on PhpMyAdmin\\SqlParser\\TokensList\|null\.$#' + identifier: property.nonObject + count: 12 + path: src/Parser.php + + - + message: '#^Cannot access property \$last on mixed\.$#' + identifier: property.nonObject + count: 1 + path: src/Parser.php + + - + message: '#^Cannot access property \$tokens on PhpMyAdmin\\SqlParser\\TokensList\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Parser.php + + - + message: '#^Cannot call method getNextOfType\(\) on PhpMyAdmin\\SqlParser\\TokensList\|null\.$#' + identifier: method.nonObject + count: 4 + path: src/Parser.php + + - + message: '#^Cannot call method validateClauseOrder\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: src/Parser.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Parser.php + + - + message: '#^Instantiated class not found\.$#' + identifier: class.notFound + count: 1 + path: src/Parser.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 2 + path: src/Parser.php + + - + message: '#^Parameter \#2 \$list of method PhpMyAdmin\\SqlParser\\Statement\:\:validateClauseOrder\(\) expects PhpMyAdmin\\SqlParser\\TokensList, PhpMyAdmin\\SqlParser\\TokensList\|null given\.$#' + identifier: argument.type + count: 2 + path: src/Parser.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Parser\:\:\$statements \(array\\) does not accept array\\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parser.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$union \(array\\) does not accept array\\|PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\>\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parser.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement\:\:\$statements \(array\\|null\) does not accept array\\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parser.php + + - + message: '#^Strict comparison using \=\=\= between non\-empty\-array\ and array\{\} will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: src/Parser.php + + - + message: '#^Call to function in_array\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 1 + path: src/Parsers/AlterOperations.php + + - + message: '#^Cannot call method has\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 2 + path: src/Parsers/AlterOperations.php + + - + message: '#^Cannot call method isEmpty\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Parsers/AlterOperations.php + + - + message: '#^Cannot call method merge\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Parsers/AlterOperations.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Parsers/AlterOperations.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 2 + path: src/Parsers/AlterOperations.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\AlterOperation\:\:\$partitions \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/AlterOperations.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Array2d.php + + - + message: '#^Cannot access an offset on list\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: src/Parsers/ArrayObjs.php + + - + message: '#^Cannot access property \$raw on list\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: property.nonObject + count: 2 + path: src/Parsers/ArrayObjs.php + + - + message: '#^Cannot access property \$values on list\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: property.nonObject + count: 2 + path: src/Parsers/ArrayObjs.php + + - + message: '#^Cannot call static method parse\(\) on mixed\.$#' + identifier: staticMethod.nonObject + count: 1 + path: src/Parsers/ArrayObjs.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 5 + path: src/Parsers/ArrayObjs.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Parsers\\ArrayObjs\:\:parse\(\) should return array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj but returns list\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: return.type + count: 1 + path: src/Parsers/ArrayObjs.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Only booleans are allowed in &&, int given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Only booleans are allowed in a negated boolean, int given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Only booleans are allowed in \|\|, int\<0, 2\> given on the left side\.$#' + identifier: booleanOr.leftNotBoolean + count: 1 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Only booleans are allowed in \|\|, int\<0, 32\> given on the right side\.$#' + identifier: booleanOr.rightNotBoolean + count: 1 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\CaseExpression\:\:\$alias \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\CaseExpression\:\:\$compareValues \(array\\) does not accept array\\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\CaseExpression\:\:\$results \(array\\) does not accept array\\.$#' + identifier: assign.propertyType + count: 2 + path: src/Parsers/CaseExpressions.php + + - + message: '#^Call to function in_array\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 1 + path: src/Parsers/Conditions.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Conditions.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 32\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Parsers/Conditions.php + + - + message: '#^Only booleans are allowed in \|\|, int\<0, 16\> given on the right side\.$#' + identifier: booleanOr.rightNotBoolean + count: 1 + path: src/Parsers/Conditions.php + + - + message: '#^Only booleans are allowed in \|\|, int\<0, 2\> given on the right side\.$#' + identifier: booleanOr.rightNotBoolean + count: 1 + path: src/Parsers/Conditions.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 4 + path: src/Parsers/CreateDefinitions.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 16\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/CreateDefinitions.php + + - + message: '#^Only booleans are allowed in a negated boolean, bool\|null given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Parsers/CreateDefinitions.php + + - + message: '#^Only booleans are allowed in an if condition, int\<0, 2\> given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Parsers/CreateDefinitions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\CreateDefinition\:\:\$name \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 2 + path: src/Parsers/CreateDefinitions.php + + - + message: '#^Cannot access property \$raw on array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: property.nonObject + count: 1 + path: src/Parsers/DataTypes.php + + - + message: '#^Cannot access property \$values on array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: property.nonObject + count: 1 + path: src/Parsers/DataTypes.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Parsers/DataTypes.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 8\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Parsers/DataTypes.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Parsers\\ExpressionArray\:\:parse\(\) should return array\ but returns list\\.$#' + identifier: return.type + count: 1 + path: src/Parsers/ExpressionArray.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/ExpressionArray.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 32\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/ExpressionArray.php + + - + message: '#^Only booleans are allowed in an if condition, int\|false given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Parsers/ExpressionArray.php + + - + message: '#^Parameter \#1 \$string of function strlen expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Parsers/ExpressionArray.php + + - + message: '#^Parameter \#1 \$string of function substr expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Parsers/ExpressionArray.php + + - + message: '#^Parameter \#2 \$subject of function preg_match expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Parsers/ExpressionArray.php + + - + message: '#^Comparison operation "\<" between int\<1, max\> and 0 is always false\.$#' + identifier: smaller.alwaysFalse + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 16 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 16\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 1\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 32\> given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 32\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 16\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 1\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 2\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\Expression\:\:\$alias \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 3 + path: src/Parsers/Expressions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\Expression\:\:\$function \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/Expressions.php + + - + message: '#^Variable property access on PhpMyAdmin\\SqlParser\\Components\\Expression\.$#' + identifier: property.dynamicName + count: 2 + path: src/Parsers/Expressions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\FunctionCall\:\:\$parameters \(PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/FunctionCalls.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Parsers/GroupKeywords.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\IndexHint\:\:\$type \(string\) does not accept mixed\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/IndexHints.php + + - + message: '#^Cannot access property \$values on array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: property.nonObject + count: 1 + path: src/Parsers/IntoKeywords.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/IntoKeywords.php + + - + message: '#^Only booleans are allowed in &&, mixed given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 2 + path: src/Parsers/IntoKeywords.php + + - + message: '#^Parameter \#3 \$keyword of method PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\:\:parseFileOptions\(\) expects string, string\|null given\.$#' + identifier: argument.type + count: 2 + path: src/Parsers/IntoKeywords.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\:\:\$dest \(PhpMyAdmin\\SqlParser\\Components\\Expression\|string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/IntoKeywords.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 3 + path: src/Parsers/JoinKeywords.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\JoinKeyword\:\:\$using \(PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/JoinKeywords.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\Key\:\:\$columns \(array\\) does not accept non\-empty\-array\\>\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/Keys.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\Key\:\:\$name \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/Keys.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\Key\:\:\$type \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/Keys.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 16\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Limits.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/Limits.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\Limit\:\:\$offset \(int\|string\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/Limits.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\Limit\:\:\$rowCount \(int\|string\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/Limits.php + + - + message: '#^Cannot access offset 1 on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Cannot access offset 2 on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Cannot assign offset ''equals'' to array\\|string\.$#' + identifier: offsetAssign.dimType + count: 1 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Cannot assign offset ''expr'' to array\\|string\.$#' + identifier: offsetAssign.dimType + count: 2 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Offset ''expr'' might not exist on array\{name\: string, equals\: bool, expr\: PhpMyAdmin\\SqlParser\\Components\\Expression\|string, value\: string\|null\}\|string\.$#' + identifier: offsetAccess.notFound + count: 1 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Offset ''name'' might not exist on array\{name\: string, equals\: bool, expr\: PhpMyAdmin\\SqlParser\\Components\\Expression\|string, value\: string\|null\}\|string\.$#' + identifier: offsetAccess.notFound + count: 1 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Only booleans are allowed in &&, mixed given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Parameter \#3 \$options of static method PhpMyAdmin\\SqlParser\\Parsers\\Expressions\:\:parse\(\) expects array\, mixed given\.$#' + identifier: argument.type + count: 1 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\OptionsArray\:\:\$options \(array\\) does not accept non\-empty\-array\\.$#' + identifier: assign.propertyType + count: 2 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\OptionsArray\:\:\$options \(array\\) does not accept non\-empty\-array\\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\OptionsArray\:\:\$options \(array\\) does not accept non\-empty\-array\\.$#' + identifier: assign.propertyType + count: 3 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\OptionsArray\:\:\$options \(array\\) does not accept non\-empty\-array\\.$#' + identifier: assign.propertyType + count: 3 + path: src/Parsers/OptionsArrays.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Parsers/OrderKeywords.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition\:\:\$name \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/ParameterDefinitions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition\:\:\$subpartitions \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/PartitionDefinitions.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition\:\:\$type \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/PartitionDefinitions.php + + - + message: '#^Cannot access property \$values on array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: property.nonObject + count: 1 + path: src/Parsers/References.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 3 + path: src/Parsers/RenameOperations.php + + - + message: '#^Only booleans are allowed in &&, int\<0, 2\> given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 1 + path: src/Parsers/SetOperations.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Components\\SetOperation\:\:\$value \(string\) does not accept string\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Parsers/SetOperations.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$call\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$endOptions\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$expr\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$fields\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$from\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$group\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$groupOptions\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$having\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$indexHints\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$into\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$join\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$limit\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$order\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$partition\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$procedure\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$renames\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$set\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$table\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$tables\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$union\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$values\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statement\:\:\$where\.$#' + identifier: property.notFound + count: 2 + path: src/Statement.php + + - + message: '#^Access to undefined constant static\(PhpMyAdmin\\SqlParser\\Statement\)\:\:STATEMENT_END_OPTIONS\.$#' + identifier: classConstant.notFound + count: 1 + path: src/Statement.php + + - + message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: src/Statement.php + + - + message: '#^Cannot call method build\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: src/Statement.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Statement.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Statement\:\:getClauseOrder\(\) should return array\ but returns array\\>\.$#' + identifier: return.type + count: 1 + path: src/Statement.php + + - + message: '#^Only booleans are allowed in a negated boolean, int given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Statement.php + + - + message: '#^Only booleans are allowed in an if condition, int\<0, 1\> given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Statement.php + + - + message: '#^Only booleans are allowed in an if condition, int\<0, 2\> given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Statement.php + + - + message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' + identifier: argument.type + count: 1 + path: src/Statement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statement\:\:\$options \(PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statement.php + + - + message: '#^Variable property access on \$this\(PhpMyAdmin\\SqlParser\\Statement\)\.$#' + identifier: property.dynamicName + count: 5 + path: src/Statement.php + + - + message: '#^Argument of an invalid type array\\|null supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Statements/AlterStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\Expression\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Statements/AlterStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Statements/AlterStatement.php + + - + message: '#^Cannot access property \$name on PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Statements/CallStatement.php + + - + message: '#^Cannot access property \$parameters on PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|null\.$#' + identifier: property.nonObject + count: 2 + path: src/Statements/CallStatement.php + + - + message: '#^Only booleans are allowed in a ternary operator condition, PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|null given\.$#' + identifier: ternary.condNotBoolean + count: 1 + path: src/Statements/CallStatement.php + + - + message: '#^Cannot access property \$database on PhpMyAdmin\\SqlParser\\Components\\Expression\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Cannot access property \$table on PhpMyAdmin\\SqlParser\\Components\\Expression\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Cannot access property \$value on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 2 + path: src/Statements/CreateStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\DataType\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\Expression\|null\.$#' + identifier: method.nonObject + count: 10 + path: src/Statements/CreateStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 12 + path: src/Statements/CreateStatement.php + + - + message: '#^Cannot call method get\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 2 + path: src/Statements/CreateStatement.php + + - + message: '#^Cannot call method has\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 9 + path: src/Statements/CreateStatement.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 8 + path: src/Statements/CreateStatement.php + + - + message: '#^Only numeric types are allowed in \+, int\|false given on the left side\.$#' + identifier: plus.leftNonNumeric + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Only numeric types are allowed in pre\-decrement, int\|false given\.$#' + identifier: preDec.nonNumeric + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Parameter \#1 \$component of static method PhpMyAdmin\\SqlParser\\Parsers\\ParameterDefinitions\:\:buildAll\(\) expects array\, array\\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\CreateStatement\:\:\$fields \(array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\CreateStatement\:\:\$partitions \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\CreateStatement\:\:\$partitionsNum \(int\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\CreateStatement\:\:\$subpartitionsNum \(int\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/CreateStatement.php + + - + message: '#^Variable property access on \$this\(PhpMyAdmin\\SqlParser\\Statements\\CreateStatement\)\.$#' + identifier: property.dynamicName + count: 3 + path: src/Statements/CreateStatement.php + + - + message: '#^Argument of an invalid type array\\|null supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Statements/DeleteStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Statements/DeleteStatement.php + + - + message: '#^Parameter \#1 \$haystack of function stripos expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Statements/DeleteStatement.php + + - + message: '#^Cannot access property \$keyword on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Cannot access property \$value on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Class PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement has an uninitialized property \$statementAlias\. Give it default value or assign it in the constructor\.$#' + identifier: property.uninitialized + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Only booleans are allowed in an elseif condition, int\|null given\.$#' + identifier: elseif.condNotBoolean + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Only booleans are allowed in an if condition, PhpMyAdmin\\SqlParser\\Parser\|null given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement\:\:\$connectionId \(int\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement\:\:\$explainedDatabase \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement\:\:\$explainedTable \(string\|null\) does not accept bool\|float\|int\|string\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Strict comparison using \!\=\= between bool\|float\|int\|string and null will always evaluate to true\.$#' + identifier: notIdentical.alwaysTrue + count: 1 + path: src/Statements/ExplainStatement.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 1 + path: src/Statements/KillStatement.php + + - + message: '#^Cannot access property \$keyword on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 2 + path: src/Statements/LoadStatement.php + + - + message: '#^Cannot access property \$token on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Statements/LoadStatement.php + + - + message: '#^Cannot access property \$type on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Statements/LoadStatement.php + + - + message: '#^Comparison operation "\>\=" between int\<3, max\> and 3 is always true\.$#' + identifier: greaterOrEqual.alwaysTrue + count: 1 + path: src/Statements/LoadStatement.php + + - + message: '#^Parameter \#3 \$keyword of method PhpMyAdmin\\SqlParser\\Statements\\LoadStatement\:\:parseFileOptions\(\) expects string, bool\|float\|int\|string given\.$#' + identifier: argument.type + count: 1 + path: src/Statements/LoadStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\LoadStatement\:\:\$partition \(PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/LoadStatement.php + + - + message: '#^Cannot call method merge\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Statements/MaintenanceStatement.php + + - + message: '#^Call to function in_array\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 1 + path: src/Statements/PurgeStatement.php + + - + message: '#^Parameter \#1 \$component of static method PhpMyAdmin\\SqlParser\\Parsers\\RenameOperations\:\:buildAll\(\) expects array\, array\\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Statements/RenameStatement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$call\.$#' + identifier: property.notFound + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$fields\.$#' + identifier: property.notFound + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$renames\.$#' + identifier: property.notFound + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$set\.$#' + identifier: property.notFound + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$table\.$#' + identifier: property.notFound + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$tables\.$#' + identifier: property.notFound + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Access to an undefined property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$values\.$#' + identifier: property.notFound + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 2 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statement\:\:\$options \(PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$endOptions \(PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$expr \(array\\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$from \(array\\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$group \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$groupOptions \(PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$having \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$indexHints \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$into \(PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$join \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$limit \(PhpMyAdmin\\SqlParser\\Components\\Limit\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$order \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$partition \(PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$procedure \(PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$union \(array\\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Property PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\:\:\$where \(array\\|null\) does not accept array\\|PhpMyAdmin\\SqlParser\\Components\\ArrayObj\|PhpMyAdmin\\SqlParser\\Components\\Expression\|PhpMyAdmin\\SqlParser\\Components\\FunctionCall\|PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|PhpMyAdmin\\SqlParser\\Components\\Limit\|PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: assign.propertyType + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Variable property access on \$this\(PhpMyAdmin\\SqlParser\\Statements\\SelectStatement\)\.$#' + identifier: property.dynamicName + count: 1 + path: src/Statements/SelectStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Statements/SetStatement.php + + - + message: '#^Parameter \#1 \$component of static method PhpMyAdmin\\SqlParser\\Parsers\\SetOperations\:\:buildAll\(\) expects array\, array\\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Statements/SetStatement.php + + - + message: '#^Argument of an invalid type array\\|null supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Statements/TransactionStatement.php + + - + message: '#^Cannot call method build\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Statements/TransactionStatement.php + + - + message: '#^Cannot call method has\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 4 + path: src/Statements/TransactionStatement.php + + - + message: '#^Only booleans are allowed in &&, PhpMyAdmin\\SqlParser\\Token\|null given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 4 + path: src/Statements/WithStatement.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\|false given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Statements/WithStatement.php + + - + message: '#^Only booleans are allowed in an if condition, PhpMyAdmin\\SqlParser\\Parser\|null given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Statements/WithStatement.php + + - + message: '#^Only booleans are allowed in an if condition, PhpMyAdmin\\SqlParser\\Token\|null given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Statements/WithStatement.php + + - + message: '#^Parameter \#1 \$name of class PhpMyAdmin\\SqlParser\\Components\\WithKeyword constructor expects string, bool\|float\|int\|string given\.$#' + identifier: argument.type + count: 1 + path: src/Statements/WithStatement.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: src/Token.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 16\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Token.php + + - + message: '#^Only booleans are allowed in a negated boolean, int\<0, 2\> given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Token.php + + - + message: '#^Only booleans are allowed in an if condition, int\<0, 1\> given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Token.php + + - + message: '#^Only booleans are allowed in an if condition, int\<0, 8\> given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Token.php + + - + message: '#^Only booleans are allowed in \|\|, int\<0, 2\> given on the right side\.$#' + identifier: booleanOr.rightNotBoolean + count: 1 + path: src/Token.php + + - + message: '#^Only booleans are allowed in \|\|, int\<0, 4\> given on the left side\.$#' + identifier: booleanOr.leftNotBoolean + count: 1 + path: src/Token.php + + - + message: '#^Argument of an invalid type list\\|false supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Tools/ContextGenerator.php + + - + message: '#^Parameter \#1 \$string of function trim expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: src/Tools/ContextGenerator.php + + - + message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, list\\|false given\.$#' + identifier: argument.type + count: 1 + path: src/Tools/ContextGenerator.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Tools\\CustomJsonSerializer\:\:extractObjectData\(\) has parameter \$ref with generic class ReflectionClass but does not specify its types\: T$#' + identifier: missingType.generics + count: 1 + path: src/Tools/CustomJsonSerializer.php + + - + message: '#^Parameter \#3 \$properties \(array\\) of method PhpMyAdmin\\SqlParser\\Tools\\CustomJsonSerializer\:\:extractObjectData\(\) should be contravariant with parameter \$properties \(array\) of method Zumba\\JsonSerializer\\JsonSerializer\:\:extractObjectData\(\)$#' + identifier: method.childParameterType + count: 1 + path: src/Tools/CustomJsonSerializer.php + + - + message: '#^Variable property access on object\.$#' + identifier: property.dynamicName + count: 1 + path: src/Tools/CustomJsonSerializer.php + + - + message: '#^Argument of an invalid type list\\|false supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Tools/TestGenerator.php + + - + message: '#^Binary operation "\." between mixed and ''/'' results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: src/Tools/TestGenerator.php + + - + message: '#^Call to function in_array\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 1 + path: src/Tools/TestGenerator.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 4 + path: src/Tools/TestGenerator.php + + - + message: '#^Parameter \#1 \$directory of function mkdir expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Tools/TestGenerator.php + + - + message: '#^Parameter \#1 \$filename of function is_dir expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Tools/TestGenerator.php + + - + message: '#^Parameter \#1 \$string of function substr expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: src/Tools/TestGenerator.php + + - + message: '#^Parameter \#1 \$offset \(int\) of method PhpMyAdmin\\SqlParser\\UtfString\:\:offsetSet\(\) should be contravariant with parameter \$offset \(int\|null\) of method ArrayAccess\\:\:offsetSet\(\)$#' + identifier: method.childParameterType + count: 1 + path: src/UtfString.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 3 + path: src/Utils/BufferedQuery.php + + - + message: '#^Call to function in_array\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 1 + path: src/Utils/CLI.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Utils\\CLI\:\:getopt\(\) should return array\\|false but returns \(array\\|string\|false\>\|false\)\.$#' + identifier: return.type + count: 1 + path: src/Utils/CLI.php + + - + message: '#^Only booleans are allowed in an if condition, string\|false\|null given\.$#' + identifier: if.condNotBoolean + count: 3 + path: src/Utils/CLI.php + + - + message: '#^Parameter \#1 \$context of static method PhpMyAdmin\\SqlParser\\Context\:\:load\(\) expects string, string\|false given\.$#' + identifier: argument.type + count: 1 + path: src/Utils/CLI.php + + - + message: '#^Parameter \#1 \$query of static method PhpMyAdmin\\SqlParser\\Utils\\Formatter\:\:format\(\) expects string, string\|false given\.$#' + identifier: argument.type + count: 1 + path: src/Utils/CLI.php + + - + message: '#^Parameter \#1 \$str of class PhpMyAdmin\\SqlParser\\Lexer constructor expects PhpMyAdmin\\SqlParser\\UtfString\|string, string\|false given\.$#' + identifier: argument.type + count: 2 + path: src/Utils/CLI.php + + - + message: '#^Using nullsafe property access "\?\-\>token" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: src/Utils/Error.php + + - + message: '#^Argument of an invalid type array\\>\|bool\|string supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Binary operation "&" between int and int\|string results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Binary operation "&\=" between array\\>\|bool\|string\|null and array\\>\|bool\|string\|null results in an error\.$#' + identifier: assignOp.invalid + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Binary operation "\." between array\\>\|bool\|string and string results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Binary operation "\.\=" between string and mixed results in an error\.$#' + identifier: assignOp.invalid + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Call to function in_array\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 4 + path: src/Utils/Formatter.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Utils\\Formatter\:\:getMergedOptions\(\) should return array\\>\|bool\|string\> but returns array\\.$#' + identifier: return.type + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Utils\\Formatter\:\:toString\(\) should return string but returns mixed\.$#' + identifier: return.type + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Only booleans are allowed in &&, array\\>\|bool\|string given on the left side\.$#' + identifier: booleanAnd.leftNotBoolean + count: 2 + path: src/Utils/Formatter.php + + - + message: '#^Only booleans are allowed in &&, array\\>\|bool\|string given on the right side\.$#' + identifier: booleanAnd.rightNotBoolean + count: 2 + path: src/Utils/Formatter.php + + - + message: '#^Only booleans are allowed in an if condition, bool\|int given\.$#' + identifier: if.condNotBoolean + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Only booleans are allowed in \|\|, array\\>\|bool\|string given on the right side\.$#' + identifier: booleanOr.rightNotBoolean + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Only booleans are allowed in \|\|, int\<0, 32\> given on the right side\.$#' + identifier: booleanOr.rightNotBoolean + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Only numeric types are allowed in pre\-increment, int\<0, max\>\|null given\.$#' + identifier: preInc.nonNumeric + count: 3 + path: src/Utils/Formatter.php + + - + message: '#^Parameter \#1 \$string of function htmlspecialchars expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: src/Utils/Formatter.php + + - + message: '#^Parameter \#1 \$string of function str_repeat expects string, array\\>\|bool\|string given\.$#' + identifier: argument.type + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Parameter \#1 \$string of method PhpMyAdmin\\SqlParser\\Utils\\Formatter\:\:escapeConsole\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 4 + path: src/Utils/Formatter.php + + - + message: '#^Parameter \#2 \$newFormats of static method PhpMyAdmin\\SqlParser\\Utils\\Formatter\:\:mergeFormats\(\) expects array\\>, array\\>\|bool\|string given\.$#' + identifier: argument.type + count: 1 + path: src/Utils/Formatter.php + + - + message: '#^Trying to invoke int\\|int\<1, max\>\|non\-falsy\-string but it might not be a callable\.$#' + identifier: callable.nonCallable + count: 1 + path: src/Utils/Formatter.php + + - + message: ''' + #^Access to deprecated property \$isDelete of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: src/Utils/Query.php + + - + message: ''' + #^Access to deprecated property \$isExplain of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: src/Utils/Query.php + + - + message: ''' + #^Access to deprecated property \$isReplace of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: src/Utils/Query.php + + - + message: ''' + #^Access to deprecated property \$isSelect of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: src/Utils/Query.php + + - + message: ''' + #^Access to deprecated property \$isShow of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: src/Utils/Query.php + + - + message: '#^Argument of an invalid type array\\|null supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Utils/Query.php + + - + message: '#^Argument of an invalid type array\\|null supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: src/Utils/Query.php + + - + message: '#^Call to function in_array\(\) requires parameter \#3 to be set\.$#' + identifier: function.strict + count: 2 + path: src/Utils/Query.php + + - + message: '#^Cannot access property \$dest on PhpMyAdmin\\SqlParser\\Components\\IntoKeyword\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Utils/Query.php + + - + message: '#^Cannot access property \$keyword on PhpMyAdmin\\SqlParser\\Token\|null\.$#' + identifier: property.nonObject + count: 1 + path: src/Utils/Query.php + + - + message: '#^Cannot call method has\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 4 + path: src/Utils/Query.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 14 + path: src/Utils/Query.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Utils\\Query\:\:getClauseStartOffset\(\) should return int but returns int\|null\.$#' + identifier: return.type + count: 1 + path: src/Utils/Query.php + + - + message: '#^Only numeric types are allowed in pre\-increment, int\|null given\.$#' + identifier: preInc.nonNumeric + count: 2 + path: src/Utils/Query.php + + - + message: '#^Cannot call method has\(\) on PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null\.$#' + identifier: method.nonObject + count: 1 + path: src/Utils/Table.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 2 + path: src/Utils/Table.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Utils\\Table\:\:getFields\(\) should return array\ but returns array\\.$#' + identifier: return.type + count: 1 + path: src/Utils/Table.php + + - + message: '#^Only booleans are allowed in a negated boolean, PhpMyAdmin\\SqlParser\\Components\\OptionsArray\|null given\.$#' + identifier: booleanNot.exprNotBoolean + count: 1 + path: src/Utils/Table.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 13 + path: tests/Builder/AlterStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 11 + path: tests/Builder/CallStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 34 + path: tests/Builder/CreateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Builder/CreateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 5 + path: tests/Builder/CreateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Builder/CreateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 8 + path: tests/Builder/CreateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 13 + path: tests/Builder/CreateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 10 + path: tests/Builder/DeleteStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 10 + path: tests/Builder/ExplainStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 6 + path: tests/Builder/InsertStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 6 + path: tests/Builder/LoadStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 7 + path: tests/Builder/LockStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Builder/PurgeStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Builder/RenameStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Builder/ReplaceStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 28 + path: tests/Builder/SelectStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 15 + path: tests/Builder/SetStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Builder/StatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Builder/StatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Builder/TransactionStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Builder/TruncateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Builder/UpdateStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertCount\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 6 + path: tests/Components/Array2dTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 8 + path: tests/Components/Array2dTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Components/ArrayObjTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/ArrayObjTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Components/ArrayObjTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 9 + path: tests/Components/CaseExpressionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 5 + path: tests/Components/ConditionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertCount\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Components/CreateDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 15 + path: tests/Components/CreateDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Components/CreateDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Components/CreateDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/CreateDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/CreateDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertCount\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/ExpressionArrayTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Components/ExpressionArrayTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 10 + path: tests/Components/ExpressionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 6 + path: tests/Components/ExpressionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/FunctionCallTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/GroupKeywordTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 6 + path: tests/Components/IntoKeywordTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertCount\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/JoinKeywordTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Components/JoinKeywordTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/JoinKeywordTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/JoinKeywordTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 42 + path: tests/Components/KeyTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 11 + path: tests/Components/KeyTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 27 + path: tests/Components/KeyTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/LimitTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 7 + path: tests/Components/LockExpressionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/LockExpressionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 9 + path: tests/Components/OptionsArrayTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/OptionsArrayTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Components/OptionsArrayTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/OptionsArrayTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Components/OrderKeywordTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/ParameterDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 6 + path: tests/Components/PartitionDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/PartitionDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Components/PartitionDefinitionTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Components/ReferenceTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Components/ReferenceTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Components/RenameOperationTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Lexer/ContextTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Lexer/ContextTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 14 + path: tests/Lexer/ContextTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 5 + path: tests/Lexer/ContextTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 7 + path: tests/Lexer/ContextTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 5 + path: tests/Lexer/ContextTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 28 + path: tests/Lexer/IsMethodsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 8 + path: tests/Lexer/IsMethodsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 10 + path: tests/Lexer/IsMethodsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 23 + path: tests/Lexer/IsMethodsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Lexer/LexerTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 18 + path: tests/Lexer/TokenTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertFalse\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Lexer/TokenTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Lexer/TokenTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Lexer/TokensListTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Lexer/TokensListTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 26 + path: tests/Lexer/TokensListTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 8 + path: tests/Lexer/TokensListTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 9 + path: tests/Lexer/TokensListTest.php + + - + message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, PhpMyAdmin\\SqlParser\\TokensList given\.$#' + identifier: argument.type + count: 1 + path: tests/Lexer/TokensListTest.php + + - + message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, PhpMyAdmin\\SqlParser\\TokensList given\.$#' + identifier: argument.type + count: 2 + path: tests/Lexer/TokensListTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Misc/UtfStringTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Misc/UtfStringTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 7 + path: tests/Misc/UtfStringTest.php + + - + message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, PhpMyAdmin\\SqlParser\\UtfString given\.$#' + identifier: argument.type + count: 1 + path: tests/Misc/UtfStringTest.php + + - + message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, PhpMyAdmin\\SqlParser\\UtfString given\.$#' + identifier: argument.type + count: 2 + path: tests/Misc/UtfStringTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertCount\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/KillStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/KillStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/KillStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/LoadStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/LoadStatementTest.php + + - + message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsString\(\) with string will always evaluate to true\.$#' + identifier: method.alreadyNarrowedType + count: 1 + path: tests/Parser/ParserLongExportsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Parser/ParserLongExportsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertIsString\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/ParserLongExportsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/ParserLongExportsTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Parser/ParserTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/SelectStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/SelectStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Parser/TransactionStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertCount\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 14 + path: tests/Parser/WithStatementTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 5 + path: tests/Parser/WithStatementTest.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: tests/TestCase.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 6 + path: tests/TestCase.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/TestCase.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/TestCase.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/TestCase.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertIsList\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/TestCase.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertIsString\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/TestCase.php + + - + message: '#^Method PhpMyAdmin\\SqlParser\\Tests\\TestCase\:\:getData\(\) should return array\{query\: string, lexer\: PhpMyAdmin\\SqlParser\\Lexer, parser\: PhpMyAdmin\\SqlParser\\Parser\|null, errors\: array\{lexer\: list\, parser\: list\\}\} but returns non\-empty\-array\.$#' + identifier: return.type + count: 1 + path: tests/TestCase.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 8 + path: tests/Tools/ContextGeneratorTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Utils/BufferedQueryTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 7 + path: tests/Utils/CLITest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Utils/CLITest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Utils/ErrorTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 1 + path: tests/Utils/ErrorTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 4 + path: tests/Utils/FormatterTest.php + + - + message: ''' + #^Access to deprecated property \$isDelete of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: tests/Utils/QueryTest.php + + - + message: ''' + #^Access to deprecated property \$isExplain of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: tests/Utils/QueryTest.php + + - + message: ''' + #^Access to deprecated property \$isReplace of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: tests/Utils/QueryTest.php + + - + message: ''' + #^Access to deprecated property \$isSelect of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: tests/Utils/QueryTest.php + + - + message: ''' + #^Access to deprecated property \$isShow of class PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\: + Use \{@see self\:\:\$queryType\} instead\.$# + ''' + identifier: property.deprecated + count: 1 + path: tests/Utils/QueryTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 25 + path: tests/Utils/QueryTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 9 + path: tests/Utils/QueryTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertNull\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Utils/QueryTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertSame\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 3 + path: tests/Utils/QueryTest.php + + - + message: '#^Parameter \#2 \$list of static method PhpMyAdmin\\SqlParser\\Utils\\Query\:\:replaceClause\(\) expects PhpMyAdmin\\SqlParser\\TokensList, PhpMyAdmin\\SqlParser\\TokensList\|null given\.$#' + identifier: argument.type + count: 1 + path: tests/Utils/QueryTest.php + + - + message: '#^Variable property access on PhpMyAdmin\\SqlParser\\Utils\\StatementFlags\.$#' + identifier: property.dynamicName + count: 1 + path: tests/Utils/QueryTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertEquals\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Utils/TableTest.php + + - + message: '#^Dynamic call to static method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)\.$#' + identifier: staticMethod.dynamicCall + count: 2 + path: tests/Utils/TableTest.php + + - + message: '#^Call to method PhpMyAdmin\\SqlParser\\UtfString\:\:offsetGet\(\) on a separate line has no effect\.$#' + identifier: method.resultUnused + count: 4 + path: tests/benchmarks/UtfStringBench.php + + - + message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#' + identifier: empty.notAllowed + count: 1 + path: tools/TestGenerator.php + diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 000000000..f6b921217 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,17 @@ +includes: + - phpstan-baseline.neon +parameters: + level: max + paths: + - bin/sql-parser + - src + - tests + - tools + reportUnmatchedIgnoredErrors: true + excludePaths: + - tools/doctum-config.php + checkBenevolentUnionTypes: true + checkUninitializedProperties: true + checkDynamicProperties: true + checkTooWideReturnTypesInProtectedAndPublicMethods: true + checkImplicitMixed: true diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 36faf5035..f50c1b293 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,18 +1,15 @@ - - - - + failOnRisky="true" + failOnWarning="true" + colors="true"> ./tests/Builder @@ -32,15 +29,26 @@ ./tests/Utils + + ./tests/Tools + ./tests/Tools/templates/ + ./tests/Tools/contexts/ + - - - src/ - - - - - - - + + + + src + + + + + + + + + + + + diff --git a/psalm-baseline.xml b/psalm-baseline.xml new file mode 100644 index 000000000..ce792f686 --- /dev/null +++ b/psalm-baseline.xml @@ -0,0 +1,1218 @@ + + + + + + + + + + alias]]> + + + + + + + + + + options]]> + + + + + name]]> + + + + options]]> + + + + + alias)]]> + + + + + name]]> + parameters]]> + + + + + + + + + + dest]]> + + + columns)]]> + + + + + type, self::JOINS)]]> + + + expr]]> + + + on)]]> + + + + + options]]> + options]]> + type]]> + + + name)]]> + + + + + table]]> + type]]> + + + + + expr]]> + + + + + name]]> + + + type]]> + + + inOut)]]> + + + + + expr]]> + name]]> + name]]> + options]]> + options]]> + + + + + + subpartitions)]]> + type)]]> + type)]]> + + + + + options]]> + table]]> + + + + + new]]> + old]]> + + + + + + + + + + + + + + + + + last]]> + last]]> + last]]> + + + str[$this->last]]]> + + + type]]> + value]]> + value]]> + value]]> + + + value]]> + + + + + + + + + + + + + union]]> + + + list)]]> + + + + + + + + token]]> + + + tokens[$list->idx]]]> + + + tokens]]> + + + + idx]]> + idx]]> + + + + + + + + + + + count]]> + idx]]> + tokens]]> + keyword]]> + token]]> + type]]> + value]]> + + + + + + + + statements]]> + statements]]> + statements]]> + statements]]> + + + list]]> + + + + + + + + + PartitionDefinitions::class], + )]]> + + + + + + + field)]]> + + + + + + + + + + + + + + + + + + + + + + + + + + raw]]> + raw]]> + values]]> + values]]> + + + + + + + + + + + flags]]> + + + compareValues]]> + results]]> + results]]> + + + value]]> + + + alias)]]> + alias)]]> + + + + + value]]> + value]]> + + + + + raw]]> + values]]> + + + + + + name)]]> + + + + + + + + + + + + + + + + + + + + + + + + + expr]]> + expr]]> + expr]]> + expr]]> + expr]]> + expr]]> + + + value]]> + value]]> + value]]> + value]]> + + + alias)]]> + alias)]]> + alias)]]> + database)]]> + function)]]> + subquery)]]> + + + + + + + + + + + name]]> + + + + + + + + type]]> + + + + + values]]> + + + keyword]]> + keyword]]> + + + value]]> + + + + + + + + type)]]> + + + + + expr]]> + true])]]> + + + columns]]> + value]]> + value]]> + + + + + + + + value]]> + value]]> + + + + + options[$lastOptionId]['name']]]> + + + + + + + + + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + options[$lastOptionId]]]> + + + options[$lastOptionId]]]> + options[$lastOptionId]]]> + + + + + + + options[$lastOptionId]['expr']]]> + options[$lastOptionId]['value']]]> + + + options]]> + options]]> + options]]> + options]]> + options]]> + options]]> + + + options[$lastOptionId]['equals']]]> + options[$lastOptionId]['expr']]]> + options[$lastOptionId]['expr']]]> + options[$lastOptionId]['expr']]]> + options[$lastOptionId]['expr']]]> + options[$lastOptionId]['name']]]> + options[$lastOptionId]['value']]]> + options[$lastOptionId]['value']]]> + options[$lastOptionId]['value']]]> + + + + + + + + + + options]]> + options]]> + options]]> + + + + + + + + + value]]> + + + + + value]]> + self::class], + )]]> + + + + + + + + + + + values]]> + + + + + expr]]> + + + value === ',']]> + + + + + $field]]> + $field]]> + $field]]> + $field]]> + $field]]> + $field]]> + $field]]> + $field]]> + $field]]> + $field]]> + $field]]> + + + + + + + $field->build()]]> + + + ]]> + + + + + + + + + + + $field)]]> + $field)]]> + $field)]]> + $field)]]> + $field)]]> + + + + + + + + + + + + + + + altered]]> + + + + + + + + + + + + + + + + + call->name]]> + + + call->name]]> + call->parameters]]> + + + + + $field]]> + + + $field]]> + + + + + + + parameters]]> + + + references->table->database]]> + references->table->table]]> + value]]> + value]]> + + + + + + + + + + + + + + + + + + + + + + + + value]]> + value]]> + PartitionDefinitions::class], + )]]> + + + + fields)]]> + partitionBy)]]> + partitionBy)]]> + partitions)]]> + partitionsNum)]]> + subpartitionBy)]]> + subpartitionsNum)]]> + + + + + + + + + + + + + column]]> + table]]> + + + keyword]]> + + + from]]> + + + + + + + + + + + + + + + + keyword]]> + value]]> + + + + + + value]]> + value]]> + value]]> + + + + value !== null]]> + + + connectionId]]> + + + + + into]]> + options]]> + + + + + + + + value]]> + + + + + + + + + fieldsOptions]]> + fileName]]> + linesRows]]> + options]]> + table]]> + + + keyword]]> + token]]> + type]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + endExpr]]> + logType]]> + + + + + renames]]> + + + + + into]]> + options]]> + + + + + column]]]> + column]]]> + table]]]> + + + + |string|null>>|null>>]]> + + + + + + + + + + + + join)]]> + + + + + set]]> + + + + + + + + + + + + + + build()]]> + + + statements]]> + + + + + + + + + table]]> + + + + + + + + + + + + + + withers[$wither]]]> + withers[$wither]]]> + withers[$wither]]]> + + + withers]]> + withers]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + errors)]]> + + + + + + status]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tokens[$list->idx - 2]->value]]]> + tokens[$list->idx - 4]->value]]]> + tokens[$list->idx - 6]->value]]]> + value]]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + options['indentation']]]> + + + options['formats']]]> + + + + + + + + + + options['clause_newline']]]> + options['parts_newline']]]> + options['parts_newline']]]> + options['parts_newline']]]> + options['remove_comments']]]> + + + + + + + + table]]]> + + + + + + + + + + + + + + + + table]]> + old]]> + + + + ]]> + + + + + + tokens]]> + tokens]]> + + + + renames]]> + + + + + + + list->getNextOfType(TokenType::Keyword)->keyword]]> + into->dest]]> + + + + + + + + function)]]> + subquery)]]> + group)]]> + group)]]> + having)]]> + having)]]> + join)]]> + join)]]> + order)]]> + + + + + + + + ]]> + + + + + + + + + + + + + + fields)]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , parser: list} + * }]]> + + + + + + + + + + + + + + + + + + list]]> + + + + + + + + diff --git a/psalm.xml b/psalm.xml new file mode 100644 index 000000000..1879e8d9b --- /dev/null +++ b/psalm.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Component.php b/src/Component.php index 520735b2d..65b600a9e 100644 --- a/src/Component.php +++ b/src/Component.php @@ -1,77 +1,25 @@ [ - 1, - 'var', - ], - 'CHARSET' => [ - 1, - 'var', - ], - 'DEFAULT CHARACTER SET' => [ - 1, - 'var', - ], - 'DEFAULT CHARSET' => [ - 1, - 'var', - ], - 'UPGRADE' => [ - 1, - 'var', - ], - 'COLLATE' => [ - 2, - 'var', - ], - 'DEFAULT COLLATE' => [ - 2, - 'var', - ], - ]; - - /** - * All table options. - * - * @var array - */ - public static $TABLE_OPTIONS = [ - 'ENGINE' => [ - 1, - 'var=', - ], - 'AUTO_INCREMENT' => [ - 1, - 'var=', - ], - 'AVG_ROW_LENGTH' => [ - 1, - 'var', - ], - 'MAX_ROWS' => [ - 1, - 'var', - ], - 'ROW_FORMAT' => [ - 1, - 'var', - ], - 'COMMENT' => [ - 1, - 'var', - ], - 'ADD' => 1, - 'ALTER' => 1, - 'ANALYZE' => 1, - 'CHANGE' => 1, - 'CHECK' => 1, - 'COALESCE' => 1, - 'CONVERT' => 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, - ]; - - /** - * All view options. - * - * @var array - */ - public static $VIEW_OPTIONS = [ - 'AS' => 1, - ]; - /** * Options of this operation. - * - * @var OptionsArray */ - public $options; + public OptionsArray|null $options = null; /** * The altered field. - * - * @var Expression */ - public $field; + public Expression|string|null $field = null; /** - * Unparsed tokens. + * The partitions. * - * @var Token[]|string + * @var PartitionDefinition[]|null */ - public $unknown = []; + public array|null $partitions = null; /** - * Constructor. - * - * @param OptionsArray $options options of alter operation - * @param Expression $field altered field - * @param array $unknown unparsed tokens found at the end of operation + * @param OptionsArray|null $options options of alter operation + * @param Expression|string|null $field altered field + * @param PartitionDefinition[]|null $partitions partitions definition found in the operation + * @param Token[] $unknown unparsed tokens found at the end of operation */ public function __construct( - $options = null, - $field = null, - $unknown = [] + OptionsArray|null $options = null, + Expression|string|null $field = null, + array|null $partitions = null, + public array $unknown = [], ) { + $this->partitions = $partitions; $this->options = $options; $this->field = $field; $this->unknown = $unknown; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return AlterOperation - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * Counts brackets. - * - * @var int - */ - $brackets = 0; - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ---------------------[ options ]---------------------> 1 - * - * 1 ----------------------[ field ]----------------------> 2 - * - * 2 -------------------------[ , ]-----------------------> 0 - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping comments. - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - // Skipping whitespaces. - if ($token->type === Token::TYPE_WHITESPACE) { - if ($state === 2) { - // When parsing the unknown part, the whitespaces are - // included to not break anything. - $ret->unknown[] = $token; - } - continue; - } - - if ($state === 0) { - $ret->options = OptionsArray::parse($parser, $list, $options); - - if ($ret->options->has('AS')) { - for (; $list->idx < $list->count; ++$list->idx) { - if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) { - break; - } - $ret->unknown[] = $list->tokens[$list->idx]; - } - break; - } - - $state = 1; - } elseif ($state === 1) { - $ret->field = Expression::parse( - $parser, - $list, - [ - 'breakOnAlias' => true, - 'parseField' => 'column', - ] - ); - if ($ret->field === null) { - // No field was read. We go back one token so the next - // iteration will parse the same token, but in state 2. - --$list->idx; - } - $state = 2; - } elseif ($state === 2) { - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - ++$brackets; - } elseif ($token->value === ')') { - --$brackets; - } elseif (($token->value === ',') && ($brackets === 0)) { - break; - } - } elseif (! empty(Parser::$STATEMENT_PARSERS[$token->value])) { - // We have reached the end of ALTER operation and suddenly found - // a start to new statement, but have not find a delimiter between them - - if (! ($token->value === 'SET' && $list->tokens[$list->idx - 1]->value === 'CHARACTER')) { - $parser->error( - 'A new statement was found, but no delimiter between it and the previous one.', - $token - ); - break; - } - } elseif ((array_key_exists($token->value, self::$DB_OPTIONS) - || array_key_exists($token->value, self::$TABLE_OPTIONS)) - && ! self::checkIfColumnDefinitionKeyword($token->value) - ) { - // This alter operation has finished, which means a comma was missing before start of new alter operation - $parser->error( - 'Missing comma before start of a new alter operation.', - $token - ); - break; - } - $ret->unknown[] = $token; - } + // Specific case of RENAME COLUMN that insert the field between 2 options. + $afterFieldsOptions = new OptionsArray(); + if ($this->options->has('RENAME') && $this->options->has('COLUMN')) { + $afterFieldsOptions = clone $this->options; + $afterFieldsOptions->remove('RENAME'); + $afterFieldsOptions->remove('COLUMN'); + $this->options->remove('TO'); } - if ($ret->options->isEmpty()) { - $parser->error( - 'Unrecognized alter operation.', - $list->tokens[$list->idx] - ); + $ret = $this->options . ' '; + if (isset($this->field) && ($this->field !== '')) { + $ret .= $this->field . ' '; } - --$list->idx; - - return $ret; - } + $ret .= $afterFieldsOptions . TokensList::buildFromArray($this->unknown); - /** - * @param AlterOperation $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) - { - $ret = $component->options . ' '; - if ((isset($component->field)) && ($component->field !== '')) { - $ret .= $component->field . ' '; + if (isset($this->partitions)) { + $ret .= PartitionDefinitions::buildAll($this->partitions); } - $ret .= TokensList::build($component->unknown); - return $ret; + return trim($ret); } - /** - * Check if token's value is one of the common keywords - * between column and table alteration - * - * @param string $tokenValue Value of current token - * @return bool - */ - private static function checkIfColumnDefinitionKeyword($tokenValue) + public function __toString(): string { - $common_options = [ - 'AUTO_INCREMENT', - 'COMMENT', - 'DEFAULT', - 'CHARACTER SET', - 'COLLATE', - 'PRIMARY', - 'UNIQUE', - 'PRIMARY KEY', - 'UNIQUE KEY', - ]; - // Since these options can be used for - // both table as well as a specific column in the table - return in_array($tokenValue, $common_options); + return $this->build(); } } diff --git a/src/Components/Array2d.php b/src/Components/Array2d.php deleted file mode 100644 index 7c999528f..000000000 --- a/src/Components/Array2d.php +++ /dev/null @@ -1,131 +0,0 @@ - 1 - * - * 1 ------------------------[ , ]------------------------> 0 - * 1 -----------------------[ else ]----------------------> (END) - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - // No keyword is expected. - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { - break; - } - - if ($state === 0) { - if ($token->value === '(') { - $arr = ArrayObj::parse($parser, $list, $options); - $arrCount = count($arr->values); - if ($count === -1) { - $count = $arrCount; - } elseif ($arrCount !== $count) { - $parser->error( - sprintf( - Translator::gettext('%1$d values were expected, but found %2$d.'), - $count, - $arrCount - ), - $token - ); - } - $ret[] = $arr; - $state = 1; - } else { - break; - } - } elseif ($state === 1) { - if ($token->value === ',') { - $state = 0; - } else { - break; - } - } - } - - if ($state === 0) { - $parser->error( - 'An opening bracket followed by a set of values was expected.', - $list->tokens[$list->idx] - ); - } - - --$list->idx; - - return $ret; - } - - /** - * @param ArrayObj[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) - { - return ArrayObj::build($component); - } -} diff --git a/src/Components/ArrayObj.php b/src/Components/ArrayObj.php index 6b90a3faa..9c734d3be 100644 --- a/src/Components/ArrayObj.php +++ b/src/Components/ArrayObj.php @@ -1,44 +1,35 @@ values = $values; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return ArrayObj|Component[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = empty($options['type']) ? new static() : []; - - /** - * The last raw expression. - * - * @var string - */ - $lastRaw = ''; - - /** - * The last value. - * - * @var string - */ - $lastValue = ''; - - /** - * Counts brackets. - * - * @var int - */ - $brackets = 0; - - /** - * Last separator (bracket or comma). - * - * @var bool - */ - $isCommaLast = false; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) - || ($token->type === Token::TYPE_COMMENT) - ) { - $lastRaw .= $token->token; - $lastValue = trim($lastValue) . ' '; - continue; - } - - if (($brackets === 0) - && (($token->type !== Token::TYPE_OPERATOR) - || ($token->value !== '(')) - ) { - $parser->error('An opening bracket was expected.', $token); - break; - } - - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - if (++$brackets === 1) { // 1 is the base level. - continue; - } - } elseif ($token->value === ')') { - if (--$brackets === 0) { // Array ended. - break; - } - } elseif ($token->value === ',') { - if ($brackets === 1) { - $isCommaLast = true; - if (empty($options['type'])) { - $ret->raw[] = trim($lastRaw); - $ret->values[] = trim($lastValue); - $lastRaw = $lastValue = ''; - } - } - continue; - } - } - - if (empty($options['type'])) { - $lastRaw .= $token->token; - $lastValue .= $token->value; - } else { - $ret[] = $options['type']::parse( - $parser, - $list, - empty($options['typeOptions']) ? [] : $options['typeOptions'] - ); - } + if ($this->raw !== []) { + return '(' . implode(', ', $this->raw) . ')'; } - // Handling last element. - // - // This is treated differently to treat the following cases: - // - // => array() - // (,) => array('', '') - // () => array() - // (a,) => array('a', '') - // (a) => array('a') - // - $lastRaw = trim($lastRaw); - if ((empty($options['type'])) - && ((strlen($lastRaw) > 0) || ($isCommaLast)) - ) { - $ret->raw[] = $lastRaw; - $ret->values[] = trim($lastValue); - } - - return $ret; + return '(' . implode(', ', $this->values) . ')'; } - /** - * @param ArrayObj|ArrayObj[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(', ', $component); - } elseif (! empty($component->raw)) { - return '(' . implode(', ', $component->raw) . ')'; - } - - return '(' . implode(', ', $component->values) . ')'; + return $this->build(); } } diff --git a/src/Components/CaseExpression.php b/src/Components/CaseExpression.php index 4bd347dc6..97336c67a 100644 --- a/src/Components/CaseExpression.php +++ b/src/Components/CaseExpression.php @@ -1,314 +1,98 @@ idx; // Skip 'CASE' - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) - || ($token->type === Token::TYPE_COMMENT) - ) { - continue; - } - - if ($state === 0) { - if ($token->type === Token::TYPE_KEYWORD) { - switch ($token->keyword) { - case 'WHEN': - ++$list->idx; // Skip 'WHEN' - $new_condition = Condition::parse($parser, $list); - $type = 1; - $state = 1; - $ret->conditions[] = $new_condition; - break; - case 'ELSE': - ++$list->idx; // Skip 'ELSE' - $ret->else_result = Expression::parse($parser, $list); - $state = 0; // last clause of CASE expression - break; - case 'END': - $state = 3; // end of CASE expression - ++$list->idx; - break 2; - default: - $parser->error('Unexpected keyword.', $token); - break 2; - } - } else { - $ret->value = Expression::parse($parser, $list); - $type = 0; - $state = 1; - } - } elseif ($state === 1) { - if ($type === 0) { - if ($token->type === Token::TYPE_KEYWORD) { - switch ($token->keyword) { - case 'WHEN': - ++$list->idx; // Skip 'WHEN' - $new_value = Expression::parse($parser, $list); - $state = 2; - $ret->compare_values[] = $new_value; - break; - case 'ELSE': - ++$list->idx; // Skip 'ELSE' - $ret->else_result = Expression::parse($parser, $list); - $state = 0; // last clause of CASE expression - break; - case 'END': - $state = 3; // end of CASE expression - ++$list->idx; - break 2; - default: - $parser->error('Unexpected keyword.', $token); - break 2; - } - } - } else { - if ($token->type === Token::TYPE_KEYWORD - && $token->keyword === 'THEN' - ) { - ++$list->idx; // Skip 'THEN' - $new_result = Expression::parse($parser, $list); - $state = 0; - $ret->results[] = $new_result; - } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error('Unexpected keyword.', $token); - break; - } - } - } elseif ($state === 2) { - if ($type === 0) { - if ($token->type === Token::TYPE_KEYWORD - && $token->keyword === 'THEN' - ) { - ++$list->idx; // Skip 'THEN' - $new_result = Expression::parse($parser, $list); - $ret->results[] = $new_result; - $state = 1; - } elseif ($token->type === Token::TYPE_KEYWORD) { - $parser->error('Unexpected keyword.', $token); - break; - } - } - } - } - - if ($state !== 3) { - $parser->error( - 'Unexpected end of CASE expression', - $list->tokens[$list->idx - 1] - ); - } else { - // Parse for alias of CASE expression - $asFound = false; - for (; $list->idx < $list->count; ++$list->idx) { - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) - || ($token->type === Token::TYPE_COMMENT) - ) { - continue; - } - - // Handle optional AS keyword before alias - if ($token->type === Token::TYPE_KEYWORD - && $token->keyword === 'AS') { - if ($asFound || ! empty($ret->alias)) { - $parser->error('Potential duplicate alias of CASE expression.', $token); - break; - } - $asFound = true; - continue; - } - - if ($asFound - && $token->type === Token::TYPE_KEYWORD - && ($token->flags & Token::FLAG_KEYWORD_RESERVED || $token->flags & Token::FLAG_KEYWORD_FUNCTION)) { - $parser->error('An alias expected after AS but got ' . $token->value, $token); - $asFound = false; - break; - } - - if ($asFound - || $token->type === Token::TYPE_STRING - || ($token->type === Token::TYPE_SYMBOL && ! $token->flags & Token::FLAG_SYMBOL_VARIABLE) - || $token->type === Token::TYPE_NONE - ) { - // An alias is expected (the keyword `AS` was previously found). - if (! empty($ret->alias)) { - $parser->error('An alias was previously found.', $token); - break; - } - $ret->alias = $token->value; - $asFound = false; - - continue; - } - - break; - } - if ($asFound) { - $parser->error('An alias was expected after AS.', $list->tokens[$list->idx - 1]); - } - - $ret->expr = self::build($ret); - } - - --$list->idx; + public string $expr = ''; - return $ret; - } - - /** - * @param CaseExpression $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function build(): string { $ret = 'CASE '; - if (isset($component->value)) { + if (isset($this->value)) { // Syntax type 0 - $ret .= $component->value . ' '; - $val_cnt = count($component->compare_values); - $res_cnt = count($component->results); - for ($i = 0; $i < $val_cnt && $i < $res_cnt; ++$i) { - $ret .= 'WHEN ' . $component->compare_values[$i] . ' '; - $ret .= 'THEN ' . $component->results[$i] . ' '; + $ret .= $this->value . ' '; + $valuesCount = count($this->compareValues); + $resultsCount = count($this->results); + for ($i = 0; $i < $valuesCount && $i < $resultsCount; ++$i) { + $ret .= 'WHEN ' . $this->compareValues[$i] . ' '; + $ret .= 'THEN ' . $this->results[$i] . ' '; } } else { // Syntax type 1 - $val_cnt = count($component->conditions); - $res_cnt = count($component->results); - for ($i = 0; $i < $val_cnt && $i < $res_cnt; ++$i) { - $ret .= 'WHEN ' . Condition::build($component->conditions[$i]) . ' '; - $ret .= 'THEN ' . $component->results[$i] . ' '; + $valuesCount = count($this->conditions); + $resultsCount = count($this->results); + for ($i = 0; $i < $valuesCount && $i < $resultsCount; ++$i) { + $ret .= 'WHEN ' . Conditions::buildAll($this->conditions[$i]) . ' '; + $ret .= 'THEN ' . $this->results[$i] . ' '; } } - if (isset($component->else_result)) { - $ret .= 'ELSE ' . $component->else_result . ' '; + + if (isset($this->elseResult)) { + $ret .= 'ELSE ' . $this->elseResult . ' '; } + $ret .= 'END'; - if ($component->alias) { - $ret .= ' AS ' . Context::escape($component->alias); + if ($this->alias) { + $ret .= ' AS ' . Context::escape($this->alias); } return $ret; } + + public function __toString(): string + { + return $this->build(); + } } diff --git a/src/Components/Condition.php b/src/Components/Condition.php index 4ad98646e..c8c8c9ada 100644 --- a/src/Components/Condition.php +++ b/src/Components/Condition.php @@ -1,233 +1,49 @@ 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, - 'XOR' => 1, - ]; +use function trim; +final class Condition implements Component +{ /** * Identifiers recognized. * - * @var array + * @var array */ - public $identifiers = []; + public array $identifiers = []; /** * Whether this component is an operator. - * - * @var bool */ - public $isOperator = false; + public bool $isOperator = false; /** * The condition. - * - * @var string */ - public $expr; + public string $expr; - /** - * Constructor. - * - * @param string $expr the condition or the operator - */ - public function __construct($expr = null) + public string $leftOperand = ''; + public string $operator = ''; + public string $rightOperand = ''; + + /** @param string $expr the condition or the operator */ + public function __construct(string|null $expr = null) { $this->expr = trim((string) $expr); } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return Condition[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - - $expr = new static(); - - /** - * Counts brackets. - * - * @var int - */ - $brackets = 0; - - /** - * Whether there was a `BETWEEN` keyword before or not. - * - * It is required to keep track of them because their structure contains - * the keyword `AND`, which is also an operator that delimits - * expressions. - * - * @var bool - */ - $betweenBefore = false; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - // Replacing all whitespaces (new lines, tabs, etc.) with a single - // space character. - if ($token->type === Token::TYPE_WHITESPACE) { - $expr->expr .= ' '; - continue; - } - - // Conditions are delimited by logical operators. - if (in_array($token->value, static::$DELIMITERS, true)) { - if ($betweenBefore && ($token->value === 'AND')) { - // The syntax of keyword `BETWEEN` is hard-coded. - $betweenBefore = false; - } else { - // The expression ended. - $expr->expr = trim($expr->expr); - if (! empty($expr->expr)) { - $ret[] = $expr; - } - - // Adding the operator. - $expr = new static($token->value); - $expr->isOperator = true; - $ret[] = $expr; - - // Preparing to parse another condition. - $expr = new static(); - continue; - } - } - - if (($token->type === Token::TYPE_KEYWORD) - && ($token->flags & Token::FLAG_KEYWORD_RESERVED) - && ! ($token->flags & Token::FLAG_KEYWORD_FUNCTION) - ) { - if ($token->value === 'BETWEEN') { - $betweenBefore = true; - } - if (($brackets === 0) && empty(static::$ALLOWED_KEYWORDS[$token->value])) { - break; - } - } - - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - ++$brackets; - } elseif ($token->value === ')') { - if ($brackets === 0) { - break; - } - --$brackets; - } - } - - $expr->expr .= $token->token; - if (($token->type === Token::TYPE_NONE) - || (($token->type === Token::TYPE_KEYWORD) - && (! ($token->flags & Token::FLAG_KEYWORD_RESERVED))) - || ($token->type === Token::TYPE_STRING) - || ($token->type === Token::TYPE_SYMBOL) - ) { - if (! in_array($token->value, $expr->identifiers)) { - $expr->identifiers[] = $token->value; - } - } - } - - // Last iteration was not processed. - $expr->expr = trim($expr->expr); - if (! empty($expr->expr)) { - $ret[] = $expr; - } - - --$list->idx; - - return $ret; + return $this->expr; } - /** - * @param Condition[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(' ', $component); - } - - return $component->expr; + return $this->build(); } } diff --git a/src/Components/CreateDefinition.php b/src/Components/CreateDefinition.php index 03f8225dd..491c7bf95 100644 --- a/src/Components/CreateDefinition.php +++ b/src/Components/CreateDefinition.php @@ -1,163 +1,64 @@ true, - - 'NOT NULL' => 1, - 'NULL' => 1, - 'DEFAULT' => [ - 2, - 'expr', - ['breakOnAlias' => true], - ], - /* Following are not according to grammar, but MySQL happily accepts - * these at any location */ - 'CHARSET' => [ - 2, - 'var', - ], - 'COLLATE' => [ - 3, - 'var', - ], - 'AUTO_INCREMENT' => 3, - 'PRIMARY' => 4, - 'PRIMARY KEY' => 4, - 'UNIQUE' => 4, - 'UNIQUE KEY' => 4, - 'COMMENT' => [ - 5, - 'var', - ], - 'COLUMN_FORMAT' => [ - 6, - 'var', - ], - 'ON UPDATE' => [ - 7, - 'expr', - ], - - // Generated columns options. - 'GENERATED ALWAYS' => 8, - 'AS' => [ - 9, - 'expr', - ['parenthesesDelimited' => true], - ], - 'VIRTUAL' => 10, - 'PERSISTENT' => 11, - 'STORED' => 11, - 'CHECK' => [ - 12, - 'expr', - ['parenthesesDelimited' => true], - ] - // Common entries. - // - // NOTE: Some of the common options are not in the same order which - // causes troubles when checking if the options are in the right order. - // I should find a way to define multiple sets of options and make the - // parser select the right set. - // - // 'UNIQUE' => 4, - // 'UNIQUE KEY' => 4, - // 'COMMENT' => array(5, 'var'), - // 'NOT NULL' => 1, - // 'NULL' => 1, - // 'PRIMARY' => 4, - // 'PRIMARY KEY' => 4, - ]; - /** * The name of the new column. - * - * @var string */ - public $name; + public string|null $name = null; /** * Whether this field is a constraint or not. - * - * @var bool */ - public $isConstraint; + public bool|null $isConstraint = null; /** * The data type of thew new column. - * - * @var DataType */ - public $type; + public DataType|null $type = null; /** * The key. - * - * @var Key */ - public $key; + public Key|null $key = null; /** * The table that is referenced. - * - * @var Reference */ - public $references; + public Reference|null $references = null; /** * The options of this field. - * - * @var OptionsArray */ - public $options; + public OptionsArray|null $options = null; /** - * Constructor. - * - * @param string $name the name of the field - * @param OptionsArray $options the options of this field - * @param DataType|Key $type the data type of this field or the key - * @param bool $isConstraint whether this field is a constraint or not - * @param Reference $references references + * @param string|null $name the name of the field + * @param OptionsArray|null $options the options of this field + * @param DataType|Key|null $type the data type of this field or the key + * @param bool $isConstraint whether this field is a constraint or not + * @param Reference|null $references references */ public function __construct( - $name = null, - $options = null, - $type = null, - $isConstraint = false, - $references = null + string|null $name = null, + OptionsArray|null $options = null, + DataType|Key|null $type = null, + bool $isConstraint = false, + Reference|null $references = null, ) { $this->name = $name; $this->options = $options; @@ -170,200 +71,38 @@ public function __construct( } } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return CreateDefinition[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - - $expr = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ ( ]------------------------> 1 - * - * 1 --------------------[ CONSTRAINT ]------------------> 1 - * 1 -----------------------[ key ]----------------------> 2 - * 1 -------------[ constraint / column name ]-----------> 2 - * - * 2 --------------------[ data type ]-------------------> 3 - * - * 3 ---------------------[ options ]--------------------> 4 - * - * 4 --------------------[ REFERENCES ]------------------> 4 - * - * 5 ------------------------[ , ]-----------------------> 1 - * 5 ------------------------[ ) ]-----------------------> 6 (-1) - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $state = 1; - } else { - $parser->error( - 'An opening bracket was expected.', - $token - ); - - break; - } - } elseif ($state === 1) { - if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'CONSTRAINT') { - $expr->isConstraint = true; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_KEY)) { - $expr->key = Key::parse($parser, $list); - $state = 4; - } elseif ($token->type === Token::TYPE_SYMBOL || $token->type === Token::TYPE_NONE) { - $expr->name = $token->value; - if (! $expr->isConstraint) { - $state = 2; - } - } elseif ($token->type === Token::TYPE_KEYWORD) { - if ($token->flags & Token::FLAG_KEYWORD_RESERVED) { - // Reserved keywords can't be used - // as field names without backquotes - $parser->error( - 'A symbol name was expected! ' - . 'A reserved keyword can not be used ' - . 'as a column name without backquotes.', - $token - ); - - return $ret; - } - - // Non-reserved keywords are allowed without backquotes - $expr->name = $token->value; - $state = 2; - } else { - $parser->error( - 'A symbol name was expected!', - $token - ); - - return $ret; - } - } elseif ($state === 2) { - $expr->type = DataType::parse($parser, $list); - $state = 3; - } elseif ($state === 3) { - $expr->options = OptionsArray::parse($parser, $list, static::$FIELD_OPTIONS); - $state = 4; - } elseif ($state === 4) { - if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'REFERENCES') { - ++$list->idx; // Skipping keyword 'REFERENCES'. - $expr->references = Reference::parse($parser, $list); - } else { - --$list->idx; - } - $state = 5; - } elseif ($state === 5) { - if (! empty($expr->type) || ! empty($expr->key)) { - $ret[] = $expr; - } - $expr = new static(); - if ($token->value === ',') { - $state = 1; - } elseif ($token->value === ')') { - $state = 6; - ++$list->idx; - break; - } else { - $parser->error( - 'A comma or a closing bracket was expected.', - $token - ); - $state = 0; - break; - } - } - } - - // Last iteration was not saved. - if (! empty($expr->type) || ! empty($expr->key)) { - $ret[] = $expr; - } - - if (($state !== 0) && ($state !== 6)) { - $parser->error( - 'A closing bracket was expected.', - $list->tokens[$list->idx - 1] - ); - } - - --$list->idx; - - return $ret; - } - - /** - * @param CreateDefinition|CreateDefinition[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) - { - if (is_array($component)) { - return "(\n " . implode(",\n ", $component) . "\n)"; - } - $tmp = ''; - if ($component->isConstraint) { + if ($this->isConstraint) { $tmp .= 'CONSTRAINT '; } - if (isset($component->name) && ($component->name !== '')) { - $tmp .= Context::escape($component->name) . ' '; + if (isset($this->name) && ($this->name !== '')) { + $tmp .= Context::escape($this->name) . ' '; } - if (! empty($component->type)) { - $tmp .= DataType::build( - $component->type, - ['lowercase' => true] - ) . ' '; + if (! empty($this->type)) { + $this->type->lowercase = true; + $tmp .= $this->type->build() . ' '; } - if (! empty($component->key)) { - $tmp .= $component->key . ' '; + if (! empty($this->key)) { + $tmp .= $this->key . ' '; } - if (! empty($component->references)) { - $tmp .= 'REFERENCES ' . $component->references . ' '; + if (! empty($this->references)) { + $tmp .= 'REFERENCES ' . $this->references . ' '; } - $tmp .= $component->options; + $tmp .= $this->options; return trim($tmp); } + + public function __toString(): string + { + return $this->build(); + } } diff --git a/src/Components/DataType.php b/src/Components/DataType.php index 8218e5b6e..d66617462 100644 --- a/src/Components/DataType.php +++ b/src/Components/DataType.php @@ -1,54 +1,24 @@ 1, - 'CHARACTER SET' => [ - 2, - 'var', - ], - 'CHARSET' => [ - 2, - 'var', - ], - 'COLLATE' => [ - 3, - 'var', - ], - 'UNSIGNED' => 4, - 'ZEROFILL' => 5, - ]; - /** * The name of the data type. - * - * @var string */ - public $name; + public string|null $name = null; /** * The parameters of this data type. @@ -61,115 +31,46 @@ class DataType extends Component * * For more information, check the MySQL manual. * - * @var array + * @var int[]|string[] */ - public $parameters = []; + public array $parameters = []; /** * The options of this data type. - * - * @var OptionsArray */ - public $options; + public OptionsArray|null $options = null; + + public bool $lowercase = false; /** - * Constructor. - * - * @param string $name the name of this data type - * @param array $parameters the parameters (size or possible values) - * @param OptionsArray $options the options of this data type + * @param string|null $name the name of this data type + * @param int[]|string[] $parameters the parameters (size or possible values) + * @param OptionsArray|null $options the options of this data type */ public function __construct( - $name = null, + string|null $name = null, array $parameters = [], - $options = null + OptionsArray|null $options = null, ) { $this->name = $name; $this->parameters = $parameters; $this->options = $options; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return DataType - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -------------------[ data type ]--------------------> 1 - * - * 1 ----------------[ size and options ]----------------> 2 - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } + $name = $this->lowercase ? strtolower($this->name) : $this->name; - if ($state === 0) { - $ret->name = strtoupper((string) $token->value); - if (($token->type !== Token::TYPE_KEYWORD) || (! ($token->flags & Token::FLAG_KEYWORD_DATA_TYPE))) { - $parser->error('Unrecognized data type.', $token); - } - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $parameters = ArrayObj::parse($parser, $list); - ++$list->idx; - $ret->parameters = (($ret->name === 'ENUM') || ($ret->name === 'SET')) ? - $parameters->raw : $parameters->values; - } - $ret->options = OptionsArray::parse($parser, $list, static::$DATA_TYPE_OPTIONS); - ++$list->idx; - break; - } - } - - if (empty($ret->name)) { - return null; + $parameters = ''; + if ($this->parameters !== []) { + $parameters = '(' . implode(',', $this->parameters) . ')'; } - --$list->idx; - - return $ret; + return trim($name . $parameters . ' ' . $this->options); } - /** - * @param DataType $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - $name = empty($options['lowercase']) ? - $component->name : strtolower($component->name); - - $parameters = ''; - if (! empty($component->parameters)) { - $parameters = '(' . implode(',', $component->parameters) . ')'; - } - - return trim($name . $parameters . ' ' . $component->options); + return $this->build(); } } diff --git a/src/Components/Expression.php b/src/Components/Expression.php index 108f33507..9d329092f 100644 --- a/src/Components/Expression.php +++ b/src/Components/Expression.php @@ -1,99 +1,58 @@ 1, - 'DUAL' => 1, - 'NULL' => 1, - 'REGEXP' => 1, - 'CASE' => 1, - 'DIV' => 1, - 'AND' => 1, - 'OR' => 1, - 'XOR' => 1, - 'NOT' => 1, - 'MOD' => 1, - ]; - /** * The name of this database. - * - * @var string */ - public $database; + public string|null $database = null; /** * The name of this table. - * - * @var string */ - public $table; + public string|null $table = null; /** * The name of the column. - * - * @var string */ - public $column; + public string|null $column = null; /** * The sub-expression. - * - * @var string */ - public $expr = ''; + public string|null $expr = ''; /** * The alias of this expression. - * - * @var string */ - public $alias; + public string|null $alias = null; /** * The name of the function. - * - * @var mixed */ - public $function; + public string|null $function = null; /** * The type of subquery. - * - * @var string */ - public $subquery; + public string|null $subquery = null; /** - * Constructor. - * * Syntax: * new Expression('expr') * new Expression('expr', 'alias') @@ -103,15 +62,17 @@ class Expression extends Component * If the database, table or column name is not required, pass an empty * string. * - * @param string $database The name of the database or the the expression. - * the the expression. - * @param string $table The name of the table or the alias of the expression. - * the alias of the expression. - * @param string $column the name of the column - * @param string $alias the name of the alias + * @param string|null $database The name of the database or the expression. + * @param string|null $table The name of the table or the alias of the expression. + * @param string|null $column the name of the column + * @param string|null $alias the name of the alias */ - public function __construct($database = null, $table = null, $column = null, $alias = null) - { + public function __construct( + string|null $database = null, + string|null $table = null, + string|null $column = null, + string|null $alias = null, + ) { if (($column === null) && ($alias === null)) { $this->expr = $database; // case 1 $this->alias = $table; // case 2 @@ -123,339 +84,36 @@ public function __construct($database = null, $table = null, $column = null, $al } } - /** - * Possible options:. - * - * `field` - * - * First field to be filled. - * If this is not specified, it takes the value of `parseField`. - * - * `parseField` - * - * Specifies the type of the field parsed. It may be `database`, - * `table` or `column`. These expressions may not include - * parentheses. - * - * `breakOnAlias` - * - * If not empty, breaks when the alias occurs (it is not included). - * - * `breakOnParentheses` - * - * If not empty, breaks when the first parentheses occurs. - * - * `parenthesesDelimited` - * - * If not empty, breaks after last parentheses occurred. - * - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return Expression - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * Whether current tokens make an expression or a table reference. - * - * @var bool - */ - $isExpr = false; - - /** - * Whether a period was previously found. - * - * @var bool - */ - $dot = false; - - /** - * Whether an alias is expected. Is 2 if `AS` keyword was found. - * - * @var bool - */ - $alias = false; - - /** - * Counts brackets. - * - * @var int - */ - $brackets = 0; - - /** - * Keeps track of the last two previous tokens. - * - * @var Token[] - */ - $prev = [ - null, - null, - ]; - - // When a field is parsed, no parentheses are expected. - if (! empty($options['parseField'])) { - $options['breakOnParentheses'] = true; - $options['field'] = $options['parseField']; - } - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) - || ($token->type === Token::TYPE_COMMENT) - ) { - if ($isExpr) { - $ret->expr .= $token->token; - } - continue; - } - - if ($token->type === Token::TYPE_KEYWORD) { - if (($brackets > 0) && empty($ret->subquery) - && ! empty(Parser::$STATEMENT_PARSERS[$token->keyword]) - ) { - // A `(` was previously found and this keyword is the - // beginning of a statement, so this is a subquery. - $ret->subquery = $token->keyword; - } elseif (($token->flags & Token::FLAG_KEYWORD_FUNCTION) - && (empty($options['parseField']) - && ! $alias) - ) { - $isExpr = true; - } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) - && ($brackets === 0) - ) { - if (empty(self::$ALLOWED_KEYWORDS[$token->keyword])) { - // A reserved keyword that is not allowed in the - // expression was found so the expression must have - // ended and a new clause is starting. - break; - } - if ($token->keyword === 'AS') { - if (! empty($options['breakOnAlias'])) { - break; - } - if ($alias) { - $parser->error( - 'An alias was expected.', - $token - ); - break; - } - $alias = true; - continue; - } elseif ($token->keyword === 'CASE') { - // For a use of CASE like - // 'SELECT a = CASE .... END, b=1, `id`, ... FROM ...' - $tempCaseExpr = CaseExpression::parse($parser, $list); - $ret->expr .= CaseExpression::build($tempCaseExpr); - $isExpr = true; - continue; - } - $isExpr = true; - } elseif ($brackets === 0 && strlen((string) $ret->expr) > 0 && ! $alias) { - /* End of expression */ - break; - } + if ($this->expr !== '' && $this->expr !== null) { + $ret = $this->expr; + } else { + $fields = []; + if (isset($this->database) && ($this->database !== '')) { + $fields[] = $this->database; } - if (($token->type === Token::TYPE_NUMBER) - || ($token->type === Token::TYPE_BOOL) - || (($token->type === Token::TYPE_SYMBOL) - && ($token->flags & Token::FLAG_SYMBOL_VARIABLE)) - || (($token->type === Token::TYPE_SYMBOL) - && ($token->flags & Token::FLAG_SYMBOL_PARAMETER)) - || (($token->type === Token::TYPE_OPERATOR) - && ($token->value !== '.')) - ) { - if (! empty($options['parseField'])) { - break; - } - - // Numbers, booleans and operators (except dot) are usually part - // of expressions. - $isExpr = true; + if (isset($this->table) && ($this->table !== '')) { + $fields[] = $this->table; } - if ($token->type === Token::TYPE_OPERATOR) { - if (! empty($options['breakOnParentheses']) - && (($token->value === '(') || ($token->value === ')')) - ) { - // No brackets were expected. - break; - } - if ($token->value === '(') { - ++$brackets; - if (empty($ret->function) && ($prev[1] !== null) - && (($prev[1]->type === Token::TYPE_NONE) - || ($prev[1]->type === Token::TYPE_SYMBOL) - || (($prev[1]->type === Token::TYPE_KEYWORD) - && ($prev[1]->flags & Token::FLAG_KEYWORD_FUNCTION))) - ) { - $ret->function = $prev[1]->value; - } - } elseif ($token->value === ')') { - if ($brackets === 0) { - // Not our bracket - break; - } else { - --$brackets; - if ($brackets === 0) { - if (! empty($options['parenthesesDelimited'])) { - // The current token is the last bracket, the next - // one will be outside the expression. - $ret->expr .= $token->token; - ++$list->idx; - break; - } - } elseif ($brackets < 0) { - // $parser->error('Unexpected closing bracket.', $token); - // $brackets = 0; - break; - } - } - } elseif ($token->value === ',') { - // Expressions are comma-delimited. - if ($brackets === 0) { - break; - } - } + if (isset($this->column) && ($this->column !== '')) { + $fields[] = $this->column; } - // Saving the previous tokens. - $prev[0] = $prev[1]; - $prev[1] = $token; - - if ($alias) { - // An alias is expected (the keyword `AS` was previously found). - if (! empty($ret->alias)) { - $parser->error('An alias was previously found.', $token); - break; - } - $ret->alias = $token->value; - $alias = false; - } elseif ($isExpr) { - // Handling aliases. - if (/* (empty($ret->alias)) && */ ($brackets === 0) - && (($prev[0] === null) - || ((($prev[0]->type !== Token::TYPE_OPERATOR) - || ($prev[0]->token === ')')) - && (($prev[0]->type !== Token::TYPE_KEYWORD) - || (! ($prev[0]->flags & Token::FLAG_KEYWORD_RESERVED))))) - && (($prev[1]->type === Token::TYPE_STRING) - || (($prev[1]->type === Token::TYPE_SYMBOL) - && (! ($prev[1]->flags & Token::FLAG_SYMBOL_VARIABLE))) - || ($prev[1]->type === Token::TYPE_NONE)) - ) { - if (! empty($ret->alias)) { - $parser->error('An alias was previously found.', $token); - break; - } - $ret->alias = $prev[1]->value; - } else { - $ret->expr .= $token->token; - } - } elseif (! $isExpr) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '.')) { - // Found a `.` which means we expect a column name and - // the column name we parsed is actually the table name - // and the table name is actually a database name. - if (! empty($ret->database) || $dot) { - $parser->error('Unexpected dot.', $token); - } - $ret->database = $ret->table; - $ret->table = $ret->column; - $ret->column = null; - $dot = true; - $ret->expr .= $token->token; - } else { - $field = empty($options['field']) ? 'column' : $options['field']; - if (empty($ret->$field)) { - $ret->$field = $token->value; - $ret->expr .= $token->token; - $dot = false; - } else { - // No alias is expected. - if (! empty($options['breakOnAlias'])) { - break; - } - if (! empty($ret->alias)) { - $parser->error('An alias was previously found.', $token); - break; - } - $ret->alias = $token->value; - } - } - } + $ret = implode('.', Context::escapeAll($fields)); } - if ($alias) { - $parser->error( - 'An alias was expected.', - $list->tokens[$list->idx - 1] - ); + if (! empty($this->alias)) { + $ret .= ' AS ' . Context::escape($this->alias); } - // White-spaces might be added at the end. - $ret->expr = trim((string) $ret->expr); - - if ($ret->expr === '') { - return null; - } - - --$list->idx; - return $ret; } - /** - * @param Expression|Expression[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(', ', $component); - } - - if ($component->expr !== '' && ! is_null($component->expr)) { - $ret = $component->expr; - } else { - $fields = []; - if (isset($component->database) && ($component->database !== '')) { - $fields[] = $component->database; - } - if (isset($component->table) && ($component->table !== '')) { - $fields[] = $component->table; - } - if (isset($component->column) && ($component->column !== '')) { - $fields[] = $component->column; - } - $ret = implode('.', Context::escape($fields)); - } - - if (! empty($component->alias)) { - $ret .= ' AS ' . Context::escape($component->alias); - } - - return $ret; + return $this->build(); } } diff --git a/src/Components/FunctionCall.php b/src/Components/FunctionCall.php index 073b0e373..5c7c2d8d0 100644 --- a/src/Components/FunctionCall.php +++ b/src/Components/FunctionCall.php @@ -1,46 +1,33 @@ name = $name; if (is_array($parameters)) { @@ -50,70 +37,13 @@ public function __construct($name = null, $parameters = null) } } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return FunctionCall - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ name ]-----------------------> 1 - * - * 1 --------------------[ parameters ]-------------------> (END) - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->name = $token->value; - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->parameters = ArrayObj::parse($parser, $list); - } - break; - } - } - - return $ret; + return $this->name . $this->parameters; } - /** - * @param FunctionCall $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - return $component->name . $component->parameters; + return $this->build(); } } diff --git a/src/Components/GroupKeyword.php b/src/Components/GroupKeyword.php index bef1ebef6..e19a4c1f0 100644 --- a/src/Components/GroupKeyword.php +++ b/src/Components/GroupKeyword.php @@ -1,131 +1,38 @@ expr = $expr; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return GroupKeyword[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - - $expr = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 --------------------[ expression ]-------------------> 1 - * - * 1 ------------------------[ , ]------------------------> 0 - * 1 -------------------[ ASC / DESC ]--------------------> 1 - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $expr->expr = Expression::parse($parser, $list); - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_KEYWORD) - && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) - ) { - $expr->type = $token->keyword; - } elseif (($token->type === Token::TYPE_OPERATOR) - && ($token->value === ',') - ) { - if (! empty($expr->expr)) { - $ret[] = $expr; - } - $expr = new static(); - $state = 0; - } else { - break; - } - } - } - - // Last iteration was not processed. - if (! empty($expr->expr)) { - $ret[] = $expr; - } - - --$list->idx; - - return $ret; + return trim((string) $this->expr); } - /** - * @param GroupKeyword|GroupKeyword[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(', ', $component); - } - - return trim((string) $component->expr); + return $this->build(); } } diff --git a/src/Components/IndexHint.php b/src/Components/IndexHint.php index 748417229..5b6cc30d6 100644 --- a/src/Components/IndexHint.php +++ b/src/Components/IndexHint.php @@ -1,193 +1,43 @@ type = $type; - $this->indexOrKey = $indexOrKey; - $this->for = $for; - $this->indexes = $indexes; + public function __construct( + public string $type = '', + public string $indexOrKey = '', + public string|null $for = null, + public array $indexes = [], + ) { } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return IndexHint|Component[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - $expr = new static(); - $expr->type = isset($options['type']) ? $options['type'] : null; - /** - * The state of the parser. - * - * Below are the states of the parser. - * 0 ----------------- [ USE/IGNORE/FORCE ]-----------------> 1 - * 1 -------------------- [ INDEX/KEY ] --------------------> 2 - * 2 ----------------------- [ FOR ] -----------------------> 3 - * 2 -------------------- [ expr_list ] --------------------> 0 - * 3 -------------- [ JOIN/GROUP BY/ORDER BY ] -------------> 4 - * 4 -------------------- [ expr_list ] --------------------> 0 - * @var int - */ - $state = 0; - - // By design, the parser will parse first token after the keyword. So, the keyword - // must be analyzed too, in order to determine the type of this index hint. - if ($list->idx > 0) { - --$list->idx; - } - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - switch ($state) { - case 0: - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'USE' || $token->keyword === 'IGNORE' || $token->keyword === 'FORCE') { - $expr->type = $token->keyword; - $state = 1; - } else { - break 2; - } - } - break; - case 1: - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'INDEX' || $token->keyword === 'KEY') { - $expr->indexOrKey = $token->keyword; - } else { - $parser->error('Unexpected keyword.', $token); - } - $state = 2; - } else { - // we expect the token to be a keyword - $parser->error('Unexpected token.', $token); - } - break; - case 2: - if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'FOR') { - $state = 3; - } else { - $expr->indexes = ExpressionArray::parse($parser, $list); - $state = 0; - $ret[] = $expr; - $expr = new static(); - } - break; - case 3: - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'JOIN' || $token->keyword === 'GROUP BY' || $token->keyword === 'ORDER BY') { - $expr->for = $token->keyword; - } else { - $parser->error('Unexpected keyword.', $token); - } - $state = 4; - } else { - // we expect the token to be a keyword - $parser->error('Unexpected token.', $token); - } - break; - case 4: - $expr->indexes = ExpressionArray::parse($parser, $list); - $state = 0; - $ret[] = $expr; - $expr = new static(); - break; - } + $ret = $this->type . ' ' . $this->indexOrKey . ' '; + if ($this->for !== null) { + $ret .= 'FOR ' . $this->for . ' '; } - --$list->idx; - return $ret; + return $ret . Expressions::buildAll($this->indexes); } - /** - * @param ArrayObj|ArrayObj[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(' ', $component); - } - - $ret = $component->type . ' ' . $component->indexOrKey . ' '; - if ($component->for !== null) { - $ret .= 'FOR ' . $component->for . ' '; - } - return $ret . ExpressionArray::build($component->indexes); + return $this->build(); } } diff --git a/src/Components/IntoKeyword.php b/src/Components/IntoKeyword.php index cebfa7a17..f7caf3eea 100644 --- a/src/Components/IntoKeyword.php +++ b/src/Components/IntoKeyword.php @@ -1,31 +1,27 @@ [ 1, 'expr', @@ -43,10 +39,8 @@ class IntoKeyword extends Component /** * LINES Options for `SELECT...INTO` statements. - * - * @var array */ - public static $LINES_OPTIONS = [ + private const STATEMENT_LINES_OPTIONS = [ 'STARTING BY' => [ 1, 'expr', @@ -59,239 +53,121 @@ class IntoKeyword extends Component /** * Type of target (OUTFILE or SYMBOL). - * - * @var string */ - public $type; + public string|null $type = null; /** * The destination, which can be a table or a file. - * - * @var string|Expression */ - public $dest; + public string|Expression|null $dest = null; /** * The name of the columns. * - * @var array + * @var string[]|null */ - public $columns; + public array|null $columns = null; /** * The values to be selected into (SELECT .. INTO @var1). * - * @var Expression[] + * @var Expression[]|null */ - public $values; + public array|null $values = null; /** * Options for FIELDS/COLUMNS keyword. * - * @var OptionsArray - * - * @see static::$FIELDS_OPTIONS + * @see IntoKeyword::STATEMENT_FIELDS_OPTIONS */ - public $fields_options; + public OptionsArray|null $fieldsOptions = null; /** * Whether to use `FIELDS` or `COLUMNS` while building. - * - * @var bool */ - public $fields_keyword; + public bool|null $fieldsKeyword = null; /** * Options for OPTIONS keyword. * - * @var OptionsArray - * - * @see static::$LINES_OPTIONS + * @see IntoKeyword::STATEMENT_LINES_OPTIONS */ - public $lines_options; + public OptionsArray|null $linesOptions = null; /** - * Constructor. - * - * @param string $type type of destination (may be OUTFILE) - * @param string|Expression $dest actual destination - * @param array $columns column list of destination - * @param array $values selected fields - * @param OptionsArray $fields_options options for FIELDS/COLUMNS keyword - * @param OptionsArray $fields_keyword options for OPTINOS keyword + * @param string|null $type type of destination (may be OUTFILE) + * @param string|Expression|null $dest actual destination + * @param string[]|null $columns column list of destination + * @param Expression[]|null $values selected fields + * @param OptionsArray|null $fieldsOptions options for FIELDS/COLUMNS keyword + * @param bool|null $fieldsKeyword options for OPTIONS keyword */ public function __construct( - $type = null, - $dest = null, - $columns = null, - $values = null, - $fields_options = null, - $fields_keyword = null + string|null $type = null, + string|Expression|null $dest = null, + array|null $columns = null, + array|null $values = null, + OptionsArray|null $fieldsOptions = null, + bool|null $fieldsKeyword = null, ) { $this->type = $type; $this->dest = $dest; $this->columns = $columns; $this->values = $values; - $this->fields_options = $fields_options; - $this->fields_keyword = $fields_keyword; + $this->fieldsOptions = $fieldsOptions; + $this->fieldsKeyword = $fieldsKeyword; } /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return IntoKeyword + * @param Parser $parser The parser + * @param TokensList $list A token list + * @param string $keyword The keyword */ - public static function parse(Parser $parser, TokensList $list, array $options = []) - { - $ret = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ name ]----------------------> 1 - * 0 ---------------------[ OUTFILE ]---------------------> 2 - * - * 1 ------------------------[ ( ]------------------------> (END) - * - * 2 ---------------------[ filename ]--------------------> 1 - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { - if (($state === 0) && ($token->keyword === 'OUTFILE')) { - $ret->type = 'OUTFILE'; - $state = 2; - continue; - } - - // No other keyword is expected except for $state = 4, which expects `LINES` - if ($state !== 4) { - break; - } - } - - if ($state === 0) { - if ((isset($options['fromInsert']) - && $options['fromInsert']) - || (isset($options['fromReplace']) - && $options['fromReplace']) - ) { - $ret->dest = Expression::parse( - $parser, - $list, - [ - 'parseField' => 'table', - 'breakOnAlias' => true, - ] - ); - } else { - $ret->values = ExpressionArray::parse($parser, $list); - } - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->columns = ArrayObj::parse($parser, $list)->values; - ++$list->idx; - } - break; - } elseif ($state === 2) { - $ret->dest = $token->value; - - $state = 3; - } elseif ($state === 3) { - $ret->parseFileOptions($parser, $list, $token->value); - $state = 4; - } elseif ($state === 4) { - if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'LINES') { - break; - } - - $ret->parseFileOptions($parser, $list, $token->value); - $state = 5; - } - } - - --$list->idx; - - return $ret; - } - - public function parseFileOptions(Parser $parser, TokensList $list, $keyword = 'FIELDS') + public function parseFileOptions(Parser $parser, TokensList $list, string $keyword = 'FIELDS'): void { ++$list->idx; if ($keyword === 'FIELDS' || $keyword === 'COLUMNS') { // parse field options - $this->fields_options = OptionsArray::parse( - $parser, - $list, - static::$FIELDS_OPTIONS - ); + $this->fieldsOptions = OptionsArrays::parse($parser, $list, self::STATEMENT_FIELDS_OPTIONS); - $this->fields_keyword = ($keyword === 'FIELDS'); + $this->fieldsKeyword = ($keyword === 'FIELDS'); } else { // parse line options - $this->lines_options = OptionsArray::parse( - $parser, - $list, - static::$LINES_OPTIONS - ); + $this->linesOptions = OptionsArrays::parse($parser, $list, self::STATEMENT_LINES_OPTIONS); } } - /** - * @param IntoKeyword $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function build(): string { - if ($component->dest instanceof Expression) { - $columns = ! empty($component->columns) ? '(`' . implode('`, `', $component->columns) . '`)' : ''; + if ($this->dest instanceof Expression) { + $columns = ! empty($this->columns) ? '(`' . implode('`, `', $this->columns) . '`)' : ''; - return $component->dest . $columns; - } elseif (isset($component->values)) { - return ExpressionArray::build($component->values); + return $this->dest . $columns; } - $ret = 'OUTFILE "' . $component->dest . '"'; + if (isset($this->values)) { + return Expressions::buildAll($this->values); + } - $fields_options_str = OptionsArray::build($component->fields_options); - if (trim($fields_options_str) !== '') { - $ret .= $component->fields_keyword ? ' FIELDS' : ' COLUMNS'; - $ret .= ' ' . $fields_options_str; + $ret = 'OUTFILE "' . $this->dest . '"'; + + $fieldsOptionsString = $this->fieldsOptions?->build() ?? ''; + if (trim($fieldsOptionsString) !== '') { + $ret .= $this->fieldsKeyword ? ' FIELDS' : ' COLUMNS'; + $ret .= ' ' . $fieldsOptionsString; } - $lines_options_str = OptionsArray::build($component->lines_options, ['expr' => true]); - if (trim($lines_options_str) !== '') { - $ret .= ' LINES ' . $lines_options_str; + $linesOptionsString = $this->linesOptions?->build() ?? ''; + if (trim($linesOptionsString) !== '') { + $ret .= ' LINES ' . $linesOptionsString; } return $ret; } + + public function __toString(): string + { + return $this->build(); + } } diff --git a/src/Components/JoinKeyword.php b/src/Components/JoinKeyword.php index 0c9dd70ce..53e23167f 100644 --- a/src/Components/JoinKeyword.php +++ b/src/Components/JoinKeyword.php @@ -1,31 +1,24 @@ 'CROSS', 'FULL JOIN' => 'FULL', 'FULL OUTER JOIN' => 'FULL', @@ -46,183 +39,67 @@ class JoinKeyword extends Component /** * Type of this join. * - * @see static::$JOINS - * - * @var string + * @see JoinKeyword::JOINS */ - public $type; + public string|null $type = null; /** * Join expression. - * - * @var Expression */ - public $expr; + public Expression|null $expr = null; /** * Join conditions. * - * @var Condition[] + * @var Condition[]|null */ - public $on; + public array|null $on = null; /** * Columns in Using clause. - * - * @var ArrayObj */ - public $using; + public ArrayObj|null $using = null; /** - * Constructor. + * Index hints * - * @param string $type Join type - * @param Expression $expr join expression - * @param Condition[] $on join conditions - * @param ArrayObj $using columns joined + * @var IndexHint[] + */ + public array $indexHints = []; + + /** + * @see JoinKeyword::JOINS * - * @see JoinKeyword::$JOINS + * @param string|null $type Join type + * @param Expression|null $expr join expression + * @param Condition[]|null $on join conditions + * @param ArrayObj|null $using columns joined + * @param IndexHint[] $indexHints index hints */ - public function __construct($type = null, $expr = null, $on = null, $using = null) - { + public function __construct( + string|null $type = null, + Expression|null $expr = null, + array|null $on = null, + ArrayObj|null $using = null, + array $indexHints = [], + ) { $this->type = $type; $this->expr = $expr; $this->on = $on; $this->using = $using; + $this->indexHints = $indexHints; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return JoinKeyword[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - - $expr = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ JOIN ]----------------------> 1 - * - * 1 -----------------------[ expr ]----------------------> 2 - * - * 2 ------------------------[ ON ]-----------------------> 3 - * 2 -----------------------[ USING ]---------------------> 4 - * - * 3 --------------------[ conditions ]-------------------> 0 - * - * 4 ----------------------[ columns ]--------------------> 0 - * - * @var int - */ - $state = 0; - - // By design, the parser will parse first token after the keyword. - // In this case, the keyword must be analyzed too, in order to determine - // the type of this join. - if ($list->idx > 0) { - --$list->idx; - } - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - if (($token->type === Token::TYPE_KEYWORD) - && ! empty(static::$JOINS[$token->keyword]) - ) { - $expr->type = static::$JOINS[$token->keyword]; - $state = 1; - } else { - break; - } - } elseif ($state === 1) { - $expr->expr = Expression::parse($parser, $list, ['field' => 'table']); - $state = 2; - } elseif ($state === 2) { - if ($token->type === Token::TYPE_KEYWORD) { - switch ($token->keyword) { - case 'ON': - $state = 3; - break; - case 'USING': - $state = 4; - break; - default: - if (! empty(static::$JOINS[$token->keyword]) - ) { - $ret[] = $expr; - $expr = new static(); - $expr->type = static::$JOINS[$token->keyword]; - $state = 1; - } else { - /* Next clause is starting */ - break 2; - } - break; - } - } - } elseif ($state === 3) { - $expr->on = Condition::parse($parser, $list); - $ret[] = $expr; - $expr = new static(); - $state = 0; - } elseif ($state === 4) { - $expr->using = ArrayObj::parse($parser, $list); - $ret[] = $expr; - $expr = new static(); - $state = 0; - } - } - - if (! empty($expr->type)) { - $ret[] = $expr; - } - - --$list->idx; - - return $ret; + return array_search($this->type, self::JOINS) . ' ' . $this->expr + . ($this->indexHints !== [] ? ' ' . IndexHints::buildAll($this->indexHints) : '') + . (! empty($this->on) ? ' ON ' . Conditions::buildAll($this->on) : '') + . (! empty($this->using) ? ' USING ' . $this->using->build() : ''); } - /** - * @param JoinKeyword[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - $ret = []; - foreach ($component as $c) { - $ret[] = array_search($c->type, static::$JOINS) . ' ' . $c->expr - . (! empty($c->on) - ? ' ON ' . Condition::build($c->on) : '') - . (! empty($c->using) - ? ' USING ' . ArrayObj::build($c->using) : ''); - } - - return implode(' ', $ret); + return $this->build(); } } diff --git a/src/Components/Key.php b/src/Components/Key.php index b924c87a5..fa0744d9a 100644 --- a/src/Components/Key.php +++ b/src/Components/Key.php @@ -1,93 +1,61 @@ [ - 1, - 'var', - ], - 'USING' => [ - 2, - 'var', - ], - 'WITH PARSER' => [ - 3, - 'var', - ], - 'COMMENT' => [ - 4, - 'var=', - ], - ]; + public string|null $name = null; /** - * The name of this key. + * The key columns * - * @var string + * @var array{name?: string, length?: int, order?: string}[] */ - public $name; + public array $columns; /** - * Columns. - * - * @var array + * The type of this key. */ - public $columns; + public string|null $type = null; /** - * The type of this key. - * - * @var string + * The expression if the Key is not using column names */ - public $type; + public string|null $expr = null; /** - * The options of this key. - * - * @var OptionsArray + * The options of this key or null if none where found. */ - public $options; + public OptionsArray|null $options = null; /** - * Constructor. - * - * @param string $name the name of the key - * @param array $columns the columns covered by this key - * @param string $type the type of this key - * @param OptionsArray $options the options of this key + * @param string|null $name the name of the key + * @param array> $columns the columns covered by this key + * @param string|null $type the type of this key + * @param OptionsArray|null $options the options of this key + * @phpstan-param array{name?: string, length?: int, order?: string}[] $columns */ public function __construct( - $name = null, + string|null $name = null, array $columns = [], - $type = null, - $options = null + string|null $type = null, + OptionsArray|null $options = null, ) { $this->name = $name; $this->columns = $columns; @@ -95,123 +63,42 @@ public function __construct( $this->options = $options; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return Key - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * Last parsed column. - * - * @var array - */ - $lastColumn = []; - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ type ]-----------------------> 1 - * - * 1 ----------------------[ name ]-----------------------> 1 - * 1 ---------------------[ columns ]---------------------> 2 - * - * 2 ---------------------[ options ]---------------------> 3 - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->type = $token->value; - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $state = 2; - } else { - $ret->name = $token->value; - } - } elseif ($state === 2) { - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - $state = 3; - } elseif (($token->value === ',') || ($token->value === ')')) { - $state = ($token->value === ',') ? 2 : 4; - if (! empty($lastColumn)) { - $ret->columns[] = $lastColumn; - $lastColumn = []; - } - } - } else { - $lastColumn['name'] = $token->value; - } - } elseif ($state === 3) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ')')) { - $state = 2; - } else { - $lastColumn['length'] = $token->value; - } - } elseif ($state === 4) { - $ret->options = OptionsArray::parse($parser, $list, static::$KEY_OPTIONS); - ++$list->idx; - break; - } + $ret = $this->type . ' '; + if (! empty($this->name)) { + $ret .= Context::escape($this->name) . ' '; } - --$list->idx; - - return $ret; - } - - /** - * @param Key $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) - { - $ret = $component->type . ' '; - if (! empty($component->name)) { - $ret .= Context::escape($component->name) . ' '; + if ($this->expr !== null) { + return $ret . '(' . $this->expr . ') ' . $this->options; } $columns = []; - foreach ($component->columns as $column) { - $tmp = Context::escape($column['name']); + foreach ($this->columns as $column) { + $tmp = ''; + if (isset($column['name'])) { + $tmp .= Context::escape($column['name']); + } + if (isset($column['length'])) { $tmp .= '(' . $column['length'] . ')'; } + + if (isset($column['order'])) { + $tmp .= ' ' . $column['order']; + } + $columns[] = $tmp; } - $ret .= '(' . implode(',', $columns) . ') ' . $component->options; + $ret .= '(' . implode(',', $columns) . ') ' . $this->options; return trim($ret); } + + public function __toString(): string + { + return $this->build(); + } } diff --git a/src/Components/Limit.php b/src/Components/Limit.php index e18219df8..32deb2c8d 100644 --- a/src/Components/Limit.php +++ b/src/Components/Limit.php @@ -1,128 +1,43 @@ rowCount = $rowCount; $this->offset = $offset; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return Limit - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - $offset = false; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { - break; - } - - if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'OFFSET') { - if ($offset) { - $parser->error('An offset was expected.', $token); - } - $offset = true; - continue; - } - - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { - $ret->offset = $ret->rowCount; - $ret->rowCount = 0; - continue; - } - - if ($offset) { - $ret->offset = $token->value; - $offset = false; - } else { - $ret->rowCount = $token->value; - } - } - - if ($offset) { - $parser->error( - 'An offset was expected.', - $list->tokens[$list->idx - 1] - ); - } - - --$list->idx; - - return $ret; + return $this->offset . ', ' . $this->rowCount; } - /** - * @param Limit $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - return $component->offset . ', ' . $component->rowCount; + return $this->build(); } } diff --git a/src/Components/LockExpression.php b/src/Components/LockExpression.php index 039d011d2..adbc00d5b 100644 --- a/src/Components/LockExpression.php +++ b/src/Components/LockExpression.php @@ -1,204 +1,41 @@ 1 - * 1 ---------------- [ lock_type ] ----------------> 2 - * 2 -------------------- [ , ] --------------------> break - * - * @var int - */ - $state = 0; - - $prevToken = null; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER - || ($token->type === Token::TYPE_OPERATOR - && $token->value === ',') - ) { - break; - } - - if ($state === 0) { - $ret->table = Expression::parse($parser, $list, ['parseField' => 'table']); - $state = 1; - } elseif ($state === 1) { - // parse lock type - $ret->type = self::parseLockType($parser, $list); - $state = 2; - } - $prevToken = $token; - } - - // 2 is the only valid end state - if ($state !== 2) { - $parser->error('Unexpected end of LOCK expression.', $prevToken); - } - - --$list->idx; - - return $ret; + return $this->table . ' ' . $this->type; } - /** - * @param LockExpression|LockExpression[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + /** @param LockExpression[] $component the component to be built */ + public static function buildAll(array $component): string { - if (is_array($component)) { - return implode(', ', $component); - } - - return $component->table . ' ' . $component->type; + return implode(', ', $component); } - private static function parseLockType(Parser $parser, TokensList $list) + public function __toString(): string { - $lockType = ''; - - /** - * The state of the parser while parsing for lock type. - * - * Below are the states of the parser. - * - * 0 ---------------- [ READ ] -----------------> 1 - * 0 ------------- [ LOW_PRIORITY ] ------------> 2 - * 0 ---------------- [ WRITE ] ----------------> 3 - * 1 ---------------- [ LOCAL ] ----------------> 3 - * 2 ---------------- [ WRITE ] ----------------> 3 - * - * @var int - */ - $state = 0; - - $prevToken = null; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER - || ($token->type === Token::TYPE_OPERATOR - && $token->value === ',') - ) { - --$list->idx; - break; - } - - // Skipping whitespaces and comments. - if ($token->type === Token::TYPE_WHITESPACE || $token->type === Token::TYPE_COMMENT) { - continue; - } - - // We only expect keywords - if ($token->type !== Token::TYPE_KEYWORD) { - $parser->error('Unexpected token.', $token); - break; - } - - if ($state === 0) { - if ($token->keyword === 'READ') { - $state = 1; - } elseif ($token->keyword === 'LOW_PRIORITY') { - $state = 2; - } elseif ($token->keyword === 'WRITE') { - $state = 3; - } else { - $parser->error('Unexpected keyword.', $token); - break; - } - $lockType .= $token->keyword; - } elseif ($state === 1) { - if ($token->keyword === 'LOCAL') { - $lockType .= ' ' . $token->keyword; - $state = 3; - } else { - $parser->error('Unexpected keyword.', $token); - break; - } - } elseif ($state === 2) { - if ($token->keyword === 'WRITE') { - $lockType .= ' ' . $token->keyword; - $state = 3; // parsing over - } else { - $parser->error('Unexpected keyword.', $token); - break; - } - } - - $prevToken = $token; - } - - // Only two possible end states - if ($state !== 1 && $state !== 3) { - $parser->error('Unexpected end of Lock expression.', $prevToken); - } - - return $lockType; + return $this->build(); } } diff --git a/src/Components/OptionsArray.php b/src/Components/OptionsArray.php index ac6d7dec3..91ef873b3 100644 --- a/src/Components/OptionsArray.php +++ b/src/Components/OptionsArray.php @@ -1,323 +1,87 @@ > $options $options The array of options. + * Options that have a value must be an array with at least two keys `name` and `expr` or `value`. + * @psalm-param array $options */ - public function __construct(array $options = []) + public function __construct(public array $options = []) { - $this->options = $options; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return OptionsArray - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * The ID that will be assigned to duplicate options. - * - * @var int - */ - $lastAssignedId = count($options) + 1; - - /** - * The option that was processed last time. - * - * @var array - */ - $lastOption = null; - - /** - * The index of the option that was processed last time. - * - * @var int - */ - $lastOptionId = 0; - - /** - * Counts brackets. - * - * @var int - */ - $brackets = 0; - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ---------------------[ option ]----------------------> 1 - * - * 1 -------------------[ = (optional) ]------------------> 2 - * - * 2 ----------------------[ value ]----------------------> 0 - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping comments. - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - // Skipping whitespace if not parsing value. - if (($token->type === Token::TYPE_WHITESPACE) && ($brackets === 0)) { - continue; - } - - if ($lastOption === null) { - $upper = strtoupper($token->token); - if (isset($options[$upper])) { - $lastOption = $options[$upper]; - $lastOptionId = is_array($lastOption) ? - $lastOption[0] : $lastOption; - $state = 0; - - // Checking for option conflicts. - // For example, in `SELECT` statements the keywords `ALL` - // and `DISTINCT` conflict and if used together, they - // produce an invalid query. - // - // Usually, tokens can be identified in the array by the - // option ID, but if conflicts occur, a generated option ID - // is used. - // - // The first pseudo duplicate ID is the maximum value of the - // real options (e.g. if there are 5 options, the first - // fake ID is 6). - if (isset($ret->options[$lastOptionId])) { - $parser->error( - sprintf( - Translator::gettext('This option conflicts with "%1$s".'), - is_array($ret->options[$lastOptionId]) - ? $ret->options[$lastOptionId]['name'] - : $ret->options[$lastOptionId] - ), - $token - ); - $lastOptionId = $lastAssignedId++; - } - } else { - // There is no option to be processed. - break; - } - } - - if ($state === 0) { - if (! is_array($lastOption)) { - // This is a just keyword option without any value. - // This is the beginning and the end of it. - $ret->options[$lastOptionId] = $token->value; - $lastOption = null; - $state = 0; - } elseif (($lastOption[1] === 'var') || ($lastOption[1] === 'var=')) { - // This is a keyword that is followed by a value. - // This is only the beginning. The value is parsed in state - // 1 and 2. State 1 is used to skip the first equals sign - // and state 2 to parse the actual value. - $ret->options[$lastOptionId] = [ - // @var string The name of the option. - 'name' => $token->value, - // @var bool Whether it contains an equal sign. - // This is used by the builder to rebuild it. - 'equals' => $lastOption[1] === 'var=', - // @var string Raw value. - 'expr' => '', - // @var string Processed value. - 'value' => '', - ]; - $state = 1; - } elseif ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { - // This is a keyword that is followed by an expression. - // The expression is used by the specialized parser. - - // Skipping this option in order to parse the expression. - ++$list->idx; - $ret->options[$lastOptionId] = [ - // @var string The name of the option. - 'name' => $token->value, - // @var bool Whether it contains an equal sign. - // This is used by the builder to rebuild it. - 'equals' => $lastOption[1] === 'expr=', - // @var Expression The parsed expression. - 'expr' => '', - ]; - $state = 1; - } - } elseif ($state === 1) { - $state = 2; - if ($token->token === '=') { - $ret->options[$lastOptionId]['equals'] = true; - continue; - } - } - - // This is outside the `elseif` group above because the change might - // change this iteration. - if ($state === 2) { - if ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { - $ret->options[$lastOptionId]['expr'] = Expression::parse( - $parser, - $list, - empty($lastOption[2]) ? [] : $lastOption[2] - ); - $ret->options[$lastOptionId]['value'] - = $ret->options[$lastOptionId]['expr']->expr; - $lastOption = null; - $state = 0; - } else { - if ($token->token === '(') { - ++$brackets; - } elseif ($token->token === ')') { - --$brackets; - } - - $ret->options[$lastOptionId]['expr'] .= $token->token; - - if (! ((($token->token === '(') && ($brackets === 1)) - || (($token->token === ')') && ($brackets === 0))) - ) { - // First pair of brackets is being skipped. - $ret->options[$lastOptionId]['value'] .= $token->value; - } - - // Checking if we finished parsing. - if ($brackets === 0) { - $lastOption = null; - } - } - } - } - - /* - * We reached the end of statement without getting a value - * for an option for which a value was required - */ - if ($state === 1 - && $lastOption - && ($lastOption[1] === 'expr' - || $lastOption[1] === 'var' - || $lastOption[1] === 'var=' - || $lastOption[1] === 'expr=') - ) { - $parser->error( - sprintf( - 'Value/Expression for the option %1$s was expected.', - $ret->options[$lastOptionId]['name'] - ), - $list->tokens[$list->idx - 1] - ); - } - - if (empty($options['_UNSORTED'])) { - ksort($ret->options); - } - - --$list->idx; - - return $ret; - } - - /** - * @param OptionsArray $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) - { - if (empty($component->options)) { + if ($this->options === []) { return ''; } $options = []; - foreach ($component->options as $option) { + foreach ($this->options as $option) { if (! is_array($option)) { $options[] = $option; } else { $options[] = $option['name'] - . ((! empty($option['equals']) && $option['equals']) ? '=' : ' ') - . (! empty($option['expr']) ? $option['expr'] : $option['value']); + . ($option['equals'] ? '=' : ' ') + . ($option['expr'] !== '' ? $option['expr'] : ($option['value'] ?? '')); } } return implode(' ', $options); } + public function has(string $key): bool + { + foreach ($this->options as $option) { + if (is_array($option)) { + if (strcasecmp($key, $option['name']) === 0) { + return ($option['value'] ?? '') !== ''; + } + } elseif (strcasecmp($key, $option) === 0) { + return true; + } + } + + return false; + } + /** - * Checks if it has the specified option and returns it value or true. + * Checks if it has the specified option and returns its value. * * @param string $key the key to be checked * @param bool $getExpr Gets the expression instead of the value. * The value is the processed form of the expression. - * - * @return mixed */ - public function has($key, $getExpr = false) + public function get(string $key, bool $getExpr = false): string|Expression { foreach ($this->options as $option) { if (is_array($option)) { - if (! strcasecmp($key, $option['name'])) { - return $getExpr ? $option['expr'] : $option['value']; + if (strcasecmp($key, $option['name']) === 0) { + return $getExpr ? $option['expr'] : ($option['value'] ?? ''); } - } elseif (! strcasecmp($key, $option)) { - return true; + } elseif (strcasecmp($key, $option) === 0) { + return $option; } } - return false; + return ''; } /** @@ -327,16 +91,16 @@ public function has($key, $getExpr = false) * * @return bool whether the key was found and deleted or not */ - public function remove($key) + public function remove(string $key): bool { foreach ($this->options as $idx => $option) { if (is_array($option)) { - if (! strcasecmp($key, $option['name'])) { + if (strcasecmp($key, $option['name']) === 0) { unset($this->options[$idx]); return true; } - } elseif (! strcasecmp($key, $option)) { + } elseif (strcasecmp($key, $option) === 0) { unset($this->options[$idx]); return true; @@ -349,25 +113,22 @@ public function remove($key) /** * Merges the specified options with these ones. Values with same ID will be * replaced. - * - * @param array|OptionsArray $options the options to be merged */ - public function merge($options) + public function merge(OptionsArray $options): void { - if (is_array($options)) { - $this->options = array_merge_recursive($this->options, $options); - } elseif ($options instanceof self) { - $this->options = array_merge_recursive($this->options, $options->options); - } + $this->options = array_merge_recursive($this->options, $options->options); } /** * Checks tf there are no options set. - * - * @return bool */ - public function isEmpty() + public function isEmpty(): bool + { + return $this->options === []; + } + + public function __toString(): string { - return empty($this->options); + return $this->build(); } } diff --git a/src/Components/OrderKeyword.php b/src/Components/OrderKeyword.php index 7d8068302..59bf0458b 100644 --- a/src/Components/OrderKeyword.php +++ b/src/Components/OrderKeyword.php @@ -1,140 +1,43 @@ expr = $expr; $this->type = $type; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return OrderKeyword[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - - $expr = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 --------------------[ expression ]-------------------> 1 - * - * 1 ------------------------[ , ]------------------------> 0 - * 1 -------------------[ ASC / DESC ]--------------------> 1 - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $expr->expr = Expression::parse($parser, $list); - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_KEYWORD) - && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) - ) { - $expr->type = $token->keyword; - } elseif (($token->type === Token::TYPE_OPERATOR) - && ($token->value === ',') - ) { - if (! empty($expr->expr)) { - $ret[] = $expr; - } - $expr = new static(); - $state = 0; - } else { - break; - } - } - } - - // Last iteration was not processed. - if (! empty($expr->expr)) { - $ret[] = $expr; - } - - --$list->idx; - - return $ret; + return $this->expr . ' ' . $this->type->value; } - /** - * @param OrderKeyword|OrderKeyword[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(', ', $component); - } - - return $component->expr . ' ' . $component->type; + return $this->build(); } } diff --git a/src/Components/OrderSortKeyword.php b/src/Components/OrderSortKeyword.php new file mode 100644 index 000000000..109b593d4 --- /dev/null +++ b/src/Components/OrderSortKeyword.php @@ -0,0 +1,11 @@ +name = $name; $this->inOut = $inOut; $this->type = $type; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return ParameterDefinition[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) - { - $ret = []; - - $expr = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ ( ]------------------------> 1 - * - * 1 ----------------[ IN / OUT / INOUT ]----------------> 1 - * 1 ----------------------[ name ]----------------------> 2 - * - * 2 -------------------[ data type ]--------------------> 3 - * - * 3 ------------------------[ , ]-----------------------> 1 - * 3 ------------------------[ ) ]-----------------------> (END) - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $state = 1; - } - continue; - } elseif ($state === 1) { - if (($token->value === 'IN') || ($token->value === 'OUT') || ($token->value === 'INOUT')) { - $expr->inOut = $token->value; - ++$list->idx; - } elseif ($token->value === ')') { - ++$list->idx; - break; - } else { - $expr->name = $token->value; - $state = 2; - } - } elseif ($state === 2) { - $expr->type = DataType::parse($parser, $list); - $state = 3; - } elseif ($state === 3) { - $ret[] = $expr; - $expr = new static(); - if ($token->value === ',') { - $state = 1; - } elseif ($token->value === ')') { - ++$list->idx; - break; - } - } - } - - // Last iteration was not saved. - if (isset($expr->name) && ($expr->name !== '')) { - $ret[] = $expr; - } - - --$list->idx; - - return $ret; - } - - /** - * @param ParameterDefinition[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function build(): string { - if (is_array($component)) { - return '(' . implode(', ', $component) . ')'; - } - $tmp = ''; - if (! empty($component->inOut)) { - $tmp .= $component->inOut . ' '; + if (! empty($this->inOut)) { + $tmp .= $this->inOut . ' '; } return trim( - $tmp . Context::escape($component->name) . ' ' . $component->type + $tmp . Context::escape($this->name) . ' ' . $this->type, ); } + + public function __toString(): string + { + return $this->build(); + } } diff --git a/src/Components/PartitionDefinition.php b/src/Components/PartitionDefinition.php index 84322b878..ce3874857 100644 --- a/src/Components/PartitionDefinition.php +++ b/src/Components/PartitionDefinition.php @@ -1,35 +1,28 @@ > + * @psalm-var array [ 1, 'var', @@ -70,184 +63,54 @@ class PartitionDefinition extends Component /** * Whether this entry is a subpartition or a partition. - * - * @var bool */ - public $isSubpartition; + public bool|null $isSubpartition = null; /** * The name of this partition. - * - * @var string */ - public $name; + public string|null $name = null; /** * The type of this partition (what follows the `VALUES` keyword). - * - * @var string */ - public $type; + public string|null $type = null; /** * The expression used to defined this partition. - * - * @var Expression|string */ - public $expr; + public Expression|string|null $expr = null; /** * The subpartitions of this partition. * - * @var PartitionDefinition[] + * @var PartitionDefinition[]|null */ - public $subpartitions; + public array|null $subpartitions = null; /** * The options of this field. - * - * @var OptionsArray */ - public $options; + public OptionsArray|null $options = null; - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return PartitionDefinition - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -------------[ PARTITION | SUBPARTITION ]------------> 1 - * - * 1 -----------------------[ name ]----------------------> 2 - * - * 2 ----------------------[ VALUES ]---------------------> 3 - * - * 3 ---------------------[ LESS THAN ]-------------------> 4 - * 3 ------------------------[ IN ]-----------------------> 4 - * - * 4 -----------------------[ expr ]----------------------> 5 - * - * 5 ----------------------[ options ]--------------------> 6 - * - * 6 ------------------[ subpartitions ]------------------> (END) - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->isSubpartition = ($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITION'); - $state = 1; - } elseif ($state === 1) { - $ret->name = $token->value; - - // Looking ahead for a 'VALUES' keyword. - // Loop until the end of the partition name (delimited by a whitespace) - while ($nextToken = $list->tokens[++$list->idx]) { - if ($nextToken->type !== Token::TYPE_NONE) { - break; - } - $ret->name .= $nextToken->value; - } - $idx = $list->idx--; - // Get the first token after the white space. - $nextToken = $list->tokens[++$idx]; - - $state = ($nextToken->type === Token::TYPE_KEYWORD) - && ($nextToken->value === 'VALUES') - ? 2 : 5; - } elseif ($state === 2) { - $state = 3; - } elseif ($state === 3) { - $ret->type = $token->value; - $state = 4; - } elseif ($state === 4) { - if ($token->value === 'MAXVALUE') { - $ret->expr = $token->value; - } else { - $ret->expr = Expression::parse( - $parser, - $list, - [ - 'parenthesesDelimited' => true, - 'breakOnAlias' => true, - ] - ); - } - $state = 5; - } elseif ($state === 5) { - $ret->options = OptionsArray::parse($parser, $list, static::$OPTIONS); - $state = 6; - } elseif ($state === 6) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->subpartitions = ArrayObj::parse( - $parser, - $list, - [ - 'type' => 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition', - ] - ); - ++$list->idx; - } - break; - } + if ($this->isSubpartition) { + return trim('SUBPARTITION ' . $this->name . ' ' . $this->options); } - --$list->idx; + $subpartitions = empty($this->subpartitions) ? '' : ' ' . PartitionDefinitions::buildAll($this->subpartitions); - return $ret; + return trim( + 'PARTITION ' . $this->name + . (empty($this->type) ? '' : ' VALUES ' . $this->type . ' ' . $this->expr . ' ') + . (! empty($this->options) && ! empty($this->type) ? '' : ' ') + . $this->options . $subpartitions, + ); } - /** - * @param PartitionDefinition|PartitionDefinition[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return "(\n" . implode(",\n", $component) . "\n)"; - } - - if ($component->isSubpartition) { - return trim('SUBPARTITION ' . $component->name . ' ' . $component->options); - } - - $subpartitions = empty($component->subpartitions) ? '' : ' ' . self::build($component->subpartitions); - - return trim( - 'PARTITION ' . $component->name - . (empty($component->type) ? '' : ' VALUES ' . $component->type . ' ' . $component->expr . ' ') - . ((! empty($component->options) && ! empty($component->type)) ? '' : ' ') . $component->options . $subpartitions - ); + return $this->build(); } } diff --git a/src/Components/Reference.php b/src/Components/Reference.php index aac73accf..8f9e90403 100644 --- a/src/Components/Reference.php +++ b/src/Components/Reference.php @@ -1,162 +1,60 @@ [ - 1, - 'var', - ], - 'ON DELETE' => [ - 2, - 'var', - ], - 'ON UPDATE' => [ - 3, - 'var', - ], - ]; - /** * The referenced table. - * - * @var Expression */ - public $table; + public Expression|null $table = null; /** * The referenced columns. * - * @var array + * @var string[] */ - public $columns; + public array $columns; /** * The options of the referencing. - * - * @var OptionsArray */ - public $options; + public OptionsArray|null $options = null; /** - * Constructor. - * - * @param Expression $table the name of the table referenced - * @param array $columns the columns referenced - * @param OptionsArray $options the options + * @param Expression|null $table the name of the table referenced + * @param string[] $columns the columns referenced + * @param OptionsArray|null $options the options */ - public function __construct($table = null, array $columns = [], $options = null) + public function __construct(Expression|null $table = null, array $columns = [], OptionsArray|null $options = null) { $this->table = $table; $this->columns = $columns; $this->options = $options; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return Reference - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ table ]---------------------> 1 - * - * 1 ---------------------[ columns ]--------------------> 2 - * - * 2 ---------------------[ options ]--------------------> (END) - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->table = Expression::parse( - $parser, - $list, - [ - 'parseField' => 'table', - 'breakOnAlias' => true, - ] - ); - $state = 1; - } elseif ($state === 1) { - $ret->columns = ArrayObj::parse($parser, $list)->values; - $state = 2; - } elseif ($state === 2) { - $ret->options = OptionsArray::parse($parser, $list, static::$REFERENCES_OPTIONS); - ++$list->idx; - break; - } - } - - --$list->idx; - - return $ret; + return trim( + $this->table + . ' (' . implode(', ', Context::escapeAll($this->columns)) . ') ' + . $this->options, + ); } - /** - * @param Reference $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - return trim( - $component->table - . ' (' . implode(', ', Context::escape($component->columns)) . ') ' - . $component->options - ); + return $this->build(); } } diff --git a/src/Components/RenameOperation.php b/src/Components/RenameOperation.php index 0008a4144..43e207208 100644 --- a/src/Components/RenameOperation.php +++ b/src/Components/RenameOperation.php @@ -1,182 +1,43 @@ old = $old; $this->new = $new; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return RenameOperation[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - - $expr = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ---------------------[ old name ]--------------------> 1 - * - * 1 ------------------------[ TO ]-----------------------> 2 - * - * 2 ---------------------[ new name ]--------------------> 3 - * - * 3 ------------------------[ , ]------------------------> 0 - * 3 -----------------------[ else ]----------------------> (END) - * - * @var int - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $expr->old = Expression::parse( - $parser, - $list, - [ - 'breakOnAlias' => true, - 'parseField' => 'table', - ] - ); - if (empty($expr->old)) { - $parser->error( - 'The old name of the table was expected.', - $token - ); - } - $state = 1; - } elseif ($state === 1) { - if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'TO') { - $state = 2; - } else { - $parser->error( - 'Keyword "TO" was expected.', - $token - ); - break; - } - } elseif ($state === 2) { - $expr->new = Expression::parse( - $parser, - $list, - [ - 'breakOnAlias' => true, - 'parseField' => 'table', - ] - ); - if (empty($expr->new)) { - $parser->error( - 'The new name of the table was expected.', - $token - ); - } - $state = 3; - } elseif ($state === 3) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { - $ret[] = $expr; - $expr = new static(); - $state = 0; - } else { - break; - } - } - } - - if ($state !== 3) { - $parser->error( - 'A rename operation was expected.', - $list->tokens[$list->idx - 1] - ); - } - - // Last iteration was not saved. - if (! empty($expr->old)) { - $ret[] = $expr; - } - - --$list->idx; - - return $ret; + return $this->old . ' TO ' . $this->new; } - /** - * @param RenameOperation $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(', ', $component); - } - - return $component->old . ' TO ' . $component->new; + return $this->build(); } } diff --git a/src/Components/SetOperation.php b/src/Components/SetOperation.php index 2d767044b..af2dd4c39 100644 --- a/src/Components/SetOperation.php +++ b/src/Components/SetOperation.php @@ -1,161 +1,40 @@ column = $column; $this->value = $value; } - /** - * @param Parser $parser the parser that serves as context - * @param TokensList $list the list of tokens that are being parsed - * @param array $options parameters for parsing - * - * @return SetOperation[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public function build(): string { - $ret = []; - - $expr = new static(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ---------------------[ col_name ]--------------------> 0 - * 0 ------------------------[ = ]------------------------> 1 - * 1 -----------------------[ value ]---------------------> 1 - * 1 ------------------------[ , ]------------------------> 0 - * - * @var int - */ - $state = 0; - - /** - * Token when the parser has seen the latest comma - * - * @var Token - */ - $commaLastSeenAt = null; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - // No keyword is expected. - if (($token->type === Token::TYPE_KEYWORD) - && ($token->flags & Token::FLAG_KEYWORD_RESERVED) - && ($state === 0) - ) { - break; - } - - if ($state === 0) { - if ($token->token === '=') { - $state = 1; - } elseif ($token->value !== ',') { - $expr->column .= $token->token; - } elseif ($token->value === ',') { - $commaLastSeenAt = $token; - } - } elseif ($state === 1) { - $tmp = Expression::parse( - $parser, - $list, - [ - 'breakOnAlias' => true, - ] - ); - if (is_null($tmp)) { - $parser->error('Missing expression.', $token); - break; - } - $expr->column = trim($expr->column); - $expr->value = $tmp->expr; - $ret[] = $expr; - $expr = new static(); - $state = 0; - $commaLastSeenAt = null; - } - } - --$list->idx; - - // We saw a comma, but didn't see a column-value pair after it - if ($commaLastSeenAt !== null) { - $parser->error('Unexpected token.', $commaLastSeenAt); - } - - return $ret; + return $this->column . ' = ' . $this->value; } - /** - * @param SetOperation|SetOperation[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + public function __toString(): string { - if (is_array($component)) { - return implode(', ', $component); - } - - return $component->column . ' = ' . $component->value; + return $this->build(); } } diff --git a/src/Components/UnionKeyword.php b/src/Components/UnionKeyword.php deleted file mode 100644 index dc0683184..000000000 --- a/src/Components/UnionKeyword.php +++ /dev/null @@ -1,35 +0,0 @@ -statement)) { + throw new RuntimeException('No statement inside WITH'); + } + + $str = $this->name; + + if ($this->columns) { + $str .= ArrayObjs::buildAll($this->columns); + } + + $str .= ' AS ('; + + foreach ($this->statement->statements as $statement) { + $str .= $statement->build(); + } + + $str .= ')'; + + return $str; + } + + public function __toString(): string + { + return $this->build(); + } +} diff --git a/src/Context.php b/src/Context.php index c9ff19efe..9f752476b 100644 --- a/src/Context.php +++ b/src/Context.php @@ -1,74 +1,61 @@ + * @psalm-var non-empty-array + * @phpstan-var non-empty-array */ - public static $KEYWORDS = []; + public static array $keywords = []; /** * List of operators and their flags. - * - * @var array */ - public static $OPERATORS = [ + private const OPERATORS = [ // Some operators (*, =) may have ambiguous flags, because they depend on // the context they are being used in. // For example: 1. SELECT * FROM table; # SQL specific (wildcard) @@ -141,323 +128,347 @@ abstract class Context ]; /** - * The mode of the MySQL server that will be used in lexing, parsing and - * building the statements. + * The mode of the MySQL server that will be used in lexing, parsing and building the statements. * - * @var int - */ - public static $MODE = 0; - - /* - * Server SQL Modes - * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html + * @internal use the {@see Context::getMode()} method instead. + * + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html + * @link https://mariadb.com/kb/en/sql-mode/ */ + public static int $mode = self::SQL_MODE_NONE; - // Compatibility mode for Microsoft's SQL server. - // This is the equivalent of ANSI_QUOTES. - const SQL_MODE_COMPAT_MYSQL = 2; + public const SQL_MODE_NONE = 0; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_allow_invalid_dates - const SQL_MODE_ALLOW_INVALID_DATES = 1; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ansi_quotes - const SQL_MODE_ANSI_QUOTES = 2; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_error_for_division_by_zero - const SQL_MODE_ERROR_FOR_DIVISION_BY_ZERO = 4; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_allow_invalid_dates + * @link https://mariadb.com/kb/en/sql-mode/#allow_invalid_dates + */ + public const SQL_MODE_ALLOW_INVALID_DATES = 1; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_high_not_precedence - const SQL_MODE_HIGH_NOT_PRECEDENCE = 8; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_ansi_quotes + * @link https://mariadb.com/kb/en/sql-mode/#ansi_quotes + */ + public const SQL_MODE_ANSI_QUOTES = 2; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ignore_space - const SQL_MODE_IGNORE_SPACE = 16; + /** Compatibility mode for Microsoft's SQL server. This is the equivalent of {@see SQL_MODE_ANSI_QUOTES}. */ + public const SQL_MODE_COMPAT_MYSQL = 2; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_create_user - const SQL_MODE_NO_AUTO_CREATE_USER = 32; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_error_for_division_by_zero + * @link https://mariadb.com/kb/en/sql-mode/#error_for_division_by_zero + */ + public const SQL_MODE_ERROR_FOR_DIVISION_BY_ZERO = 4; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_value_on_zero - const SQL_MODE_NO_AUTO_VALUE_ON_ZERO = 64; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_high_not_precedence + * @link https://mariadb.com/kb/en/sql-mode/#high_not_precedence + */ + public const SQL_MODE_HIGH_NOT_PRECEDENCE = 8; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_backslash_escapes - const SQL_MODE_NO_BACKSLASH_ESCAPES = 128; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_ignore_space + * @link https://mariadb.com/kb/en/sql-mode/#ignore_space + */ + public const SQL_MODE_IGNORE_SPACE = 16; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create - const SQL_MODE_NO_DIR_IN_CREATE = 256; + /** + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user + * @link https://mariadb.com/kb/en/sql-mode/#no_auto_create_user + */ + public const SQL_MODE_NO_AUTO_CREATE_USER = 32; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create - const SQL_MODE_NO_ENGINE_SUBSTITUTION = 512; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_no_auto_value_on_zero + * @link https://mariadb.com/kb/en/sql-mode/#no_auto_value_on_zero + */ + public const SQL_MODE_NO_AUTO_VALUE_ON_ZERO = 64; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_field_options - const SQL_MODE_NO_FIELD_OPTIONS = 1024; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_no_backslash_escapes + * @link https://mariadb.com/kb/en/sql-mode/#no_backslash_escapes + */ + public const SQL_MODE_NO_BACKSLASH_ESCAPES = 128; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_key_options - const SQL_MODE_NO_KEY_OPTIONS = 2048; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_no_dir_in_create + * @link https://mariadb.com/kb/en/sql-mode/#no_dir_in_create + */ + public const SQL_MODE_NO_DIR_IN_CREATE = 256; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_table_options - const SQL_MODE_NO_TABLE_OPTIONS = 4096; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_no_engine_substitution + * @link https://mariadb.com/kb/en/sql-mode/#no_engine_substitution + */ + public const SQL_MODE_NO_ENGINE_SUBSTITUTION = 512; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_unsigned_subtraction - const SQL_MODE_NO_UNSIGNED_SUBTRACTION = 8192; + /** + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_field_options + * @link https://mariadb.com/kb/en/sql-mode/#no_field_options + */ + public const SQL_MODE_NO_FIELD_OPTIONS = 1024; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_date - const SQL_MODE_NO_ZERO_DATE = 16384; + /** + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_key_options + * @link https://mariadb.com/kb/en/sql-mode/#no_key_options + */ + public const SQL_MODE_NO_KEY_OPTIONS = 2048; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_in_date - const SQL_MODE_NO_ZERO_IN_DATE = 32768; + /** + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_table_options + * @link https://mariadb.com/kb/en/sql-mode/#no_table_options + */ + public const SQL_MODE_NO_TABLE_OPTIONS = 4096; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_only_full_group_by - const SQL_MODE_ONLY_FULL_GROUP_BY = 65536; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_no_unsigned_subtraction + * @link https://mariadb.com/kb/en/sql-mode/#no_unsigned_subtraction + */ + public const SQL_MODE_NO_UNSIGNED_SUBTRACTION = 8192; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_pipes_as_concat - const SQL_MODE_PIPES_AS_CONCAT = 131072; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_no_zero_date + * @link https://mariadb.com/kb/en/sql-mode/#no_zero_date + */ + public const SQL_MODE_NO_ZERO_DATE = 16384; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_real_as_float - const SQL_MODE_REAL_AS_FLOAT = 262144; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_no_zero_in_date + * @link https://mariadb.com/kb/en/sql-mode/#no_zero_in_date + */ + public const SQL_MODE_NO_ZERO_IN_DATE = 32768; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_all_tables - const SQL_MODE_STRICT_ALL_TABLES = 524288; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_only_full_group_by + * @link https://mariadb.com/kb/en/sql-mode/#only_full_group_by + */ + public const SQL_MODE_ONLY_FULL_GROUP_BY = 65536; - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_trans_tables - const SQL_MODE_STRICT_TRANS_TABLES = 1048576; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_pipes_as_concat + * @link https://mariadb.com/kb/en/sql-mode/#pipes_as_concat + */ + public const SQL_MODE_PIPES_AS_CONCAT = 131072; - // Custom modes. + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_real_as_float + * @link https://mariadb.com/kb/en/sql-mode/#real_as_float + */ + public const SQL_MODE_REAL_AS_FLOAT = 262144; - // The table and column names and any other field that must be escaped will - // not be. - // Reserved keywords are being escaped regardless this mode is used or not. - const SQL_MODE_NO_ENCLOSING_QUOTES = 1073741824; + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_strict_all_tables + * @link https://mariadb.com/kb/en/sql-mode/#strict_all_tables + */ + public const SQL_MODE_STRICT_ALL_TABLES = 524288; - /* - * Combination SQL Modes - * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sql-mode-combo + /** + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_strict_trans_tables + * @link https://mariadb.com/kb/en/sql-mode/#strict_trans_tables */ + public const SQL_MODE_STRICT_TRANS_TABLES = 1048576; - // REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE - const SQL_MODE_ANSI = 393234; + /** + * Custom mode. + * The table and column names and any other field that must be escaped will not be. + * Reserved keywords are being escaped regardless this mode is used or not. + */ + public const SQL_MODE_NO_ENCLOSING_QUOTES = 1073741824; - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, - const SQL_MODE_DB2 = 138258; + /** + * Equivalent to {@see SQL_MODE_REAL_AS_FLOAT}, {@see SQL_MODE_PIPES_AS_CONCAT}, {@see SQL_MODE_ANSI_QUOTES}, + * {@see SQL_MODE_IGNORE_SPACE}. + * + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi + * @link https://mariadb.com/kb/en/sql-mode/#ansi + */ + public const SQL_MODE_ANSI = 393234; - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER - const SQL_MODE_MAXDB = 138290; + /** + * Equivalent to {@see SQL_MODE_PIPES_AS_CONCAT}, {@see SQL_MODE_ANSI_QUOTES}, {@see SQL_MODE_IGNORE_SPACE}, + * {@see SQL_MODE_NO_KEY_OPTIONS}, {@see SQL_MODE_NO_TABLE_OPTIONS}, {@see SQL_MODE_NO_FIELD_OPTIONS}. + * + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_db2 + * @link https://mariadb.com/kb/en/sql-mode/#db2 + */ + public const SQL_MODE_DB2 = 138258; - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS - const SQL_MODE_MSSQL = 138258; + /** + * Equivalent to {@see SQL_MODE_PIPES_AS_CONCAT}, {@see SQL_MODE_ANSI_QUOTES}, {@see SQL_MODE_IGNORE_SPACE}, + * {@see SQL_MODE_NO_KEY_OPTIONS}, {@see SQL_MODE_NO_TABLE_OPTIONS}, {@see SQL_MODE_NO_FIELD_OPTIONS}, + * {@see SQL_MODE_NO_AUTO_CREATE_USER}. + * + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_maxdb + * @link https://mariadb.com/kb/en/sql-mode/#maxdb + */ + public const SQL_MODE_MAXDB = 138290; - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER - const SQL_MODE_ORACLE = 138290; + /** + * Equivalent to {@see SQL_MODE_PIPES_AS_CONCAT}, {@see SQL_MODE_ANSI_QUOTES}, {@see SQL_MODE_IGNORE_SPACE}, + * {@see SQL_MODE_NO_KEY_OPTIONS}, {@see SQL_MODE_NO_TABLE_OPTIONS}, {@see SQL_MODE_NO_FIELD_OPTIONS}. + * + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_mssql + * @link https://mariadb.com/kb/en/sql-mode/#mssql + */ + public const SQL_MODE_MSSQL = 138258; - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS - const SQL_MODE_POSTGRESQL = 138258; + /** + * Equivalent to {@see SQL_MODE_PIPES_AS_CONCAT}, {@see SQL_MODE_ANSI_QUOTES}, {@see SQL_MODE_IGNORE_SPACE}, + * {@see SQL_MODE_NO_KEY_OPTIONS}, {@see SQL_MODE_NO_TABLE_OPTIONS}, {@see SQL_MODE_NO_FIELD_OPTIONS}, + * {@see SQL_MODE_NO_AUTO_CREATE_USER}. + * + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_oracle + * @link https://mariadb.com/kb/en/sql-mode/#oracle + */ + public const SQL_MODE_ORACLE = 138290; - // STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, - // ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER - const SQL_MODE_TRADITIONAL = 1622052; + /** + * Equivalent to {@see SQL_MODE_PIPES_AS_CONCAT}, {@see SQL_MODE_ANSI_QUOTES}, {@see SQL_MODE_IGNORE_SPACE}, + * {@see SQL_MODE_NO_KEY_OPTIONS}, {@see SQL_MODE_NO_TABLE_OPTIONS}, {@see SQL_MODE_NO_FIELD_OPTIONS}. + * + * @link https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_postgresql + * @link https://mariadb.com/kb/en/sql-mode/#postgresql + */ + public const SQL_MODE_POSTGRESQL = 138258; - // ------------------------------------------------------------------------- - // Keyword. + /** + * Equivalent to {@see SQL_MODE_STRICT_TRANS_TABLES}, {@see SQL_MODE_STRICT_ALL_TABLES}, + * {@see SQL_MODE_NO_ZERO_IN_DATE}, {@see SQL_MODE_NO_ZERO_DATE}, {@see SQL_MODE_ERROR_FOR_DIVISION_BY_ZERO}, + * {@see SQL_MODE_NO_AUTO_CREATE_USER}. + * + * @link https://dev.mysql.com/doc/refman/en/sql-mode.html#sqlmode_traditional + * @link https://mariadb.com/kb/en/sql-mode/#traditional + */ + public const SQL_MODE_TRADITIONAL = 1622052; /** * Checks if the given string is a keyword. * - * @param string $str string to be checked - * @param bool $isReserved checks if the keyword is reserved - * - * @return int + * @param bool $isReserved checks if the keyword is reserved */ - public static function isKeyword($str, $isReserved = false) + public static function isKeyword(string $string, bool $isReserved = false): int|null { - $str = strtoupper($str); - - if (isset(static::$KEYWORDS[$str])) { - if ($isReserved && ! (static::$KEYWORDS[$str] & Token::FLAG_KEYWORD_RESERVED)) { - return null; - } + $upperString = strtoupper($string); - return static::$KEYWORDS[$str]; + if ( + ! isset(static::$keywords[$upperString]) + || ($isReserved && ! (static::$keywords[$upperString] & Token::FLAG_KEYWORD_RESERVED)) + ) { + return null; } - return null; + return static::$keywords[$upperString]; } - // ------------------------------------------------------------------------- - // Operator. - /** - * Checks if the given string is an operator. - * - * @param string $str string to be checked - * - * @return int the appropriate flag for the operator + * Checks if the given string is an operator and returns the appropriate flag for the operator. */ - public static function isOperator($str) + public static function isOperator(string $string): int|null { - if (! isset(static::$OPERATORS[$str])) { - return null; - } - - return static::$OPERATORS[$str]; + return self::OPERATORS[$string] ?? null; } - // ------------------------------------------------------------------------- - // Whitespace. - /** * Checks if the given character is a whitespace. - * - * @param string $str string to be checked - * - * @return bool */ - public static function isWhitespace($str) + public static function isWhitespace(string $character): bool { - return ($str === ' ') || ($str === "\r") || ($str === "\n") || ($str === "\t"); + return match ($character) { + ' ', "\r", "\n", "\t" => true, + default => false, + }; } - // ------------------------------------------------------------------------- - // Comment. - /** * Checks if the given string is the beginning of a whitespace. * - * @param string $str string to be checked - * @param mixed $end - * - * @return int the appropriate flag for the comment type + * @return int|null the appropriate flag for the comment type */ - public static function isComment($str, $end = false) + public static function isComment(string $string, bool $end = false): int|null { - $len = strlen($str); - if ($len === 0) { - return null; - } - if ($str[0] === '#') { - return Token::FLAG_COMMENT_BASH; - } elseif (($len > 1) && ($str[0] === '/') && ($str[1] === '*')) { - return (($len > 2) && ($str[2] === '!')) ? - Token::FLAG_COMMENT_MYSQL_CMD : Token::FLAG_COMMENT_C; - } elseif (($len > 1) && ($str[0] === '*') && ($str[1] === '/')) { - return Token::FLAG_COMMENT_C; - } elseif (($len > 2) && ($str[0] === '-') - && ($str[1] === '-') && static::isWhitespace($str[2]) - ) { - return Token::FLAG_COMMENT_SQL; - } elseif (($len === 2) && $end && ($str[0] === '-') && ($str[1] === '-')) { - return Token::FLAG_COMMENT_SQL; - } - - return null; + return match (true) { + str_starts_with($string, '#') => Token::FLAG_COMMENT_BASH, + str_starts_with($string, '/*!') => Token::FLAG_COMMENT_MYSQL_CMD, + // If comment is opening C style (/*) or is closing C style (*/), warning, it could conflict + // with wildcard and a real opening C style. + // It would look like the following valid SQL statement: "SELECT */* comment */ FROM...". + str_starts_with($string, '/*') || str_starts_with($string, '*/') => Token::FLAG_COMMENT_C, + str_starts_with($string, '-- ') + || str_starts_with($string, "--\r") + || str_starts_with($string, "--\n") + || str_starts_with($string, "--\t") + || ($string === '--' && $end) => Token::FLAG_COMMENT_SQL, + default => null, + }; } - // ------------------------------------------------------------------------- - // Bool. - /** * Checks if the given string is a boolean value. * This actually check only for `TRUE` and `FALSE` because `1` or `0` are * actually numbers and are parsed by specific methods. - * - * @param string $str string to be checked - * - * @return bool */ - public static function isBool($str) + public static function isBool(string $string): bool { - $str = strtoupper($str); + $upperString = strtoupper($string); - return ($str === 'TRUE') || ($str === 'FALSE'); + return $upperString === 'TRUE' || $upperString === 'FALSE'; } - // ------------------------------------------------------------------------- - // Number. - /** * Checks if the given character can be a part of a number. - * - * @param string $str string to be checked - * - * @return bool */ - public static function isNumber($str) + public static function isNumber(string $string): bool { - return (($str >= '0') && ($str <= '9')) || ($str === '.') - || ($str === '-') || ($str === '+') || ($str === 'e') || ($str === 'E'); + return in_array($string, ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '-', '+', 'e', 'E'], true); } - // ------------------------------------------------------------------------- - // Symbol. - /** * Checks if the given character is the beginning of a symbol. A symbol * can be either a variable or a field name. * - * @param string $str string to be checked - * - * @return int the appropriate flag for the symbol type + * @return int|null the appropriate flag for the symbol type */ - public static function isSymbol($str) + public static function isSymbol(string $character): int|null { - if (strlen($str) === 0) { - return null; - } - if ($str[0] === '@') { - return Token::FLAG_SYMBOL_VARIABLE; - } elseif ($str[0] === '`') { - return Token::FLAG_SYMBOL_BACKTICK; - } elseif ($str[0] === ':' || $str[0] === '?') { - return Token::FLAG_SYMBOL_PARAMETER; - } - - return null; + return match ($character) { + '@' => Token::FLAG_SYMBOL_VARIABLE, + '`' => Token::FLAG_SYMBOL_BACKTICK, + ':', '?' => Token::FLAG_SYMBOL_PARAMETER, + default => null, + }; } - // ------------------------------------------------------------------------- - // String. - /** * Checks if the given character is the beginning of a string. * - * @param string $str string to be checked + * @param string $character a character to be checked * - * @return int the appropriate flag for the string type + * @return int|null the appropriate flag for the string type */ - public static function isString($str) + public static function isString(string $character): int|null { - if (strlen($str) === 0) { - return null; - } - if ($str[0] === '\'') { - return Token::FLAG_STRING_SINGLE_QUOTES; - } elseif ($str[0] === '"') { - return Token::FLAG_STRING_DOUBLE_QUOTES; - } - - return null; + return match ($character) { + '\'' => Token::FLAG_STRING_SINGLE_QUOTES, + '"' => Token::FLAG_STRING_DOUBLE_QUOTES, + default => null, + }; } - // ------------------------------------------------------------------------- - // Delimiter. - /** * Checks if the given character can be a separator for two lexeme. * - * @param string $str string to be checked - * - * @return bool + * @param string $string string to be checked */ - public static function isSeparator($str) + public static function isSeparator(string $string): bool { - // NOTES: Only non alphanumeric ASCII characters may be separators. + // NOTES: Only non-alphanumeric ASCII characters may be separators. // `~` is the last printable ASCII character. - return ($str <= '~') && ($str !== '_') - && (($str < '0') || ($str > '9')) - && (($str < 'a') || ($str > 'z')) - && (($str < 'A') || ($str > 'Z')); + return $string <= '~' + && $string !== '_' + && $string !== '$' + && ($string < '0' || $string > '9') + && ($string < 'a' || $string > 'z') + && ($string < 'A' || $string > 'Z'); } /** @@ -465,28 +476,31 @@ public static function isSeparator($str) * * Contexts may be used by accessing the context directly. * - * @param string $context name of the context or full class name that - * defines the context + * @param string $context name of the context or full class name that defines the context * - * @throws LoaderException if the specified context doesn't exist + * @return bool true if the context was loaded, false otherwise */ - public static function load($context = '') + public static function load(string $context = ''): bool { - if (empty($context)) { - $context = self::$defaultContext; + if ($context === '') { + $context = ContextMySql50700::class; } - if ($context[0] !== '\\') { - // Short context name (must be formatted into class name). - $context = self::$contextPrefix . $context; - } - if (! class_exists($context)) { - throw @new LoaderException( - 'Specified context ("' . $context . '") does not exist.', - $context - ); + + $contextClass = $context; + if (! class_exists($contextClass)) { + $contextClass = self::CONTEXT_PREFIX . $context; + if (! class_exists($contextClass)) { + $contextClass = '\\' . $context; + if (! class_exists($contextClass)) { + return false; + } + } } - self::$loadedContext = $context; - self::$KEYWORDS = $context::$KEYWORDS; + + self::$loadedContext = $contextClass; + self::$keywords = $contextClass::KEYWORDS; + + return true; } /** @@ -497,89 +511,165 @@ public static function load($context = '') * * @see Context::load() * - * @param string $context name of the context or full class name that - * defines the context + * @param string $context name of the context or full class name that defines the context * - * @return string The loaded context. `null` if no context was loaded. + * @return string|null The loaded context. `null` if no context was loaded. */ - public static function loadClosest($context = '') + public static function loadClosest(string $context = ''): string|null { $length = strlen($context); for ($i = $length; $i > 0;) { - try { - /* Trying to load the new context */ - static::load($context); + /* Trying to load the new context */ + if (static::load($context)) { return $context; - } catch (LoaderException $e) { - /* Replace last two non zero digits by zeroes */ - do { - $i -= 2; - $part = substr($context, $i, 2); - /* No more numeric parts to strip */ - if (! is_numeric($part)) { - break 2; - } - } while (intval($part) === 0 && $i > 0); - $context = substr($context, 0, $i) . '00' . substr($context, $i + 2); } + + /* Replace last two non zero digits by zeroes */ + do { + $i -= 2; + $part = substr($context, $i, 2); + /* No more numeric parts to strip */ + if (! is_numeric($part)) { + break 2; + } + } while (intval($part) === 0 && $i > 0); + + $context = substr($context, 0, $i) . '00' . substr($context, $i + 2); } + /* Fallback to loading at least matching engine */ - if (strncmp($context, 'MariaDb', 7) === 0) { + if (str_starts_with($context, 'MariaDb')) { return static::loadClosest('MariaDb100300'); - } elseif (strncmp($context, 'MySql', 5) === 0) { + } + + if (str_starts_with($context, 'MySql')) { return static::loadClosest('MySql50700'); } + return null; } + /** + * Gets the SQL mode. + */ + public static function getMode(): int + { + return static::$mode; + } + /** * Sets the SQL mode. - * - * @param string $mode The list of modes. If empty, the mode is reset. */ - public static function setMode($mode = '') + public static function setMode(int|string $mode = self::SQL_MODE_NONE): void { - static::$MODE = 0; - if (empty($mode)) { + if (is_int($mode)) { + static::$mode = $mode; + return; } - $mode = explode(',', $mode); - foreach ($mode as $m) { - static::$MODE |= constant('static::SQL_MODE_' . $m); + + static::$mode = self::SQL_MODE_NONE; + if ($mode === '') { + return; + } + + $modes = explode(',', $mode); + foreach ($modes as $sqlMode) { + static::$mode |= self::getModeFromString($sqlMode); } } + /** @psalm-suppress MixedReturnStatement, MixedInferredReturnType Is caused by the LSB of the constants */ + private static function getModeFromString(string $mode): int + { + return match ($mode) { + 'ALLOW_INVALID_DATES' => self::SQL_MODE_ALLOW_INVALID_DATES, + 'ANSI_QUOTES' => self::SQL_MODE_ANSI_QUOTES, + 'COMPAT_MYSQL' => self::SQL_MODE_COMPAT_MYSQL, + 'ERROR_FOR_DIVISION_BY_ZERO' => self::SQL_MODE_ERROR_FOR_DIVISION_BY_ZERO, + 'HIGH_NOT_PRECEDENCE' => self::SQL_MODE_HIGH_NOT_PRECEDENCE, + 'IGNORE_SPACE' => self::SQL_MODE_IGNORE_SPACE, + 'NO_AUTO_CREATE_USER' => self::SQL_MODE_NO_AUTO_CREATE_USER, + 'NO_AUTO_VALUE_ON_ZERO' => self::SQL_MODE_NO_AUTO_VALUE_ON_ZERO, + 'NO_BACKSLASH_ESCAPES' => self::SQL_MODE_NO_BACKSLASH_ESCAPES, + 'NO_DIR_IN_CREATE' => self::SQL_MODE_NO_DIR_IN_CREATE, + 'NO_ENGINE_SUBSTITUTION' => self::SQL_MODE_NO_ENGINE_SUBSTITUTION, + 'NO_FIELD_OPTIONS' => self::SQL_MODE_NO_FIELD_OPTIONS, + 'NO_KEY_OPTIONS' => self::SQL_MODE_NO_KEY_OPTIONS, + 'NO_TABLE_OPTIONS' => self::SQL_MODE_NO_TABLE_OPTIONS, + 'NO_UNSIGNED_SUBTRACTION' => self::SQL_MODE_NO_UNSIGNED_SUBTRACTION, + 'NO_ZERO_DATE' => self::SQL_MODE_NO_ZERO_DATE, + 'NO_ZERO_IN_DATE' => self::SQL_MODE_NO_ZERO_IN_DATE, + 'ONLY_FULL_GROUP_BY' => self::SQL_MODE_ONLY_FULL_GROUP_BY, + 'PIPES_AS_CONCAT' => self::SQL_MODE_PIPES_AS_CONCAT, + 'REAL_AS_FLOAT' => self::SQL_MODE_REAL_AS_FLOAT, + 'STRICT_ALL_TABLES' => self::SQL_MODE_STRICT_ALL_TABLES, + 'STRICT_TRANS_TABLES' => self::SQL_MODE_STRICT_TRANS_TABLES, + 'NO_ENCLOSING_QUOTES' => self::SQL_MODE_NO_ENCLOSING_QUOTES, + 'ANSI' => self::SQL_MODE_ANSI, + 'DB2' => self::SQL_MODE_DB2, + 'MAXDB' => self::SQL_MODE_MAXDB, + 'MSSQL' => self::SQL_MODE_MSSQL, + 'ORACLE' => self::SQL_MODE_ORACLE, + 'POSTGRESQL' => self::SQL_MODE_POSTGRESQL, + 'TRADITIONAL' => self::SQL_MODE_TRADITIONAL, + default => self::SQL_MODE_NONE, + }; + } + /** * Escapes the symbol by adding surrounding backticks. * - * @param array|string $str the string to be escaped - * @param string $quote quote to be used when escaping - * - * @return string + * @param string $str the string to be escaped + * @param string $quote quote to be used when escaping */ - public static function escape($str, $quote = '`') + public static function escape(string $str, string $quote = '`'): string { - if (is_array($str)) { - foreach ($str as $key => $value) { - $str[$key] = static::escape($value); - } - - return $str; - } - - if ((static::$MODE & self::SQL_MODE_NO_ENCLOSING_QUOTES) - && (! static::isKeyword($str, true)) + if ( + (static::$mode & self::SQL_MODE_NO_ENCLOSING_QUOTES) && ! ( + static::isKeyword($str, true) || self::doesIdentifierRequireQuoting($str) + ) ) { return $str; } - if (static::$MODE & self::SQL_MODE_ANSI_QUOTES) { + if (static::$mode & self::SQL_MODE_ANSI_QUOTES) { $quote = '"'; } return $quote . str_replace($quote, $quote . $quote, $str) . $quote; } -} -// Initializing the default context. -Context::load(); + /** + * Escapes the symbol by adding surrounding backticks. + * + * @param string[] $strings the string to be escaped + * + * @return string[] + */ + public static function escapeAll(array $strings): array + { + return array_map(static::escape(...), $strings); + } + + /** + * Function verifies that given SQL Mode constant is currently set + * + * @param int $flag for example {@see Context::SQL_MODE_ANSI_QUOTES} + * + * @return bool false on empty param, true/false on given constant/int value + */ + public static function hasMode(int|null $flag = null): bool + { + if (empty($flag)) { + return false; + } + + return (self::$mode & $flag) === $flag; + } + + private static function doesIdentifierRequireQuoting(string $identifier): bool + { + return preg_match('/^[$]|^\d+$|[^0-9a-zA-Z$_\x80-\xffff]/', $identifier) === 1; + } +} diff --git a/src/Contexts/ContextMariaDb100000.php b/src/Contexts/ContextMariaDb100000.php index cb0ac6e14..0c8118c4b 100644 --- a/src/Contexts/ContextMariaDb100000.php +++ b/src/Contexts/ContextMariaDb100000.php @@ -1,316 +1,1013 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, - 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, - 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, - 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, - 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, - 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, - 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, - 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, - 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, - 'STRING' => 1, 'TABLES' => 1, - 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, - 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, - 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, - 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, - 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, - 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, - 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXTENDED' => 1, 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, - 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, - 'TABLESPACE' => 1, 'TABLE_NAME' => 1, - 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, - 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, - 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, - 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, - 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, - 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, - 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, - 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, - 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, - 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'CONSTRAINT_CATALOG' => 1, - 'SQL_TSI_FRAC_SECOND' => 1, - 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, - 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, - 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, - 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, - 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, - 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, - 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, - 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, - 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, - 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'SUBSTRING' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, - 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, - 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, - 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, - 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, - 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, - 'TIMESTAMPDIFF' => 33, - 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, - 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, - 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'MULTIPOINTFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTHORS' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CONTRIBUTORS' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FRAC_SECOND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INNOBASE' => Token::FLAG_KEYWORD, + 'INNODB' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONE_SHOT' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_FRAC_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'VIRTUAL' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMariaDb100100.php b/src/Contexts/ContextMariaDb100100.php index 7a419ab1a..266ae81ff 100644 --- a/src/Contexts/ContextMariaDb100100.php +++ b/src/Contexts/ContextMariaDb100100.php @@ -1,365 +1,1113 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, 'XID' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, - 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, - 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, - 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, - 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, - 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, - 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, - 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, - 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, - 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, - 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, - 'TABLES' => 1, - 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, - 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, - 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, - 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, - 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, - 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, - 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, - 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, - 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, - 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, - 'STATS_SAMPLE_PAGES' => 1, - 'REPLICATE_IGNORE_DB' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, - 'REPLICATE_IGNORE_TABLE' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'REPLICATE_WILD_IGNORE_TABLE' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, - 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, - 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, - 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, - 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, - 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, - 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, - 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, - 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, - 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, - 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, - 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, - 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, - 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, - 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, - 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, - 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, - 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, - 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, - 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, - 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, - 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, - 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, - 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, - 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, - 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, - 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, - 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, - 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, - 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, - 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, - 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, - 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, - 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, - 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, - 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, - 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, - 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, - 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, - 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, - 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, - 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, - 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, - 'ST_POLYGONFROMWKB' => 33, - 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, - 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, - 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, - 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, - 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, - 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, - 'ST_MULTIPOINTFROMWKB' => 33, - 'ST_MULTIPOINTFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMariaDb100200.php b/src/Contexts/ContextMariaDb100200.php index e0923add3..fab2e37bf 100644 --- a/src/Contexts/ContextMariaDb100200.php +++ b/src/Contexts/ContextMariaDb100200.php @@ -1,365 +1,1093 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, 'XID' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, - 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, - 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, - 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, - 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, - 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, - 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, - 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, - 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, - 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, - 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, - 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, - 'TABLES' => 1, - 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, - 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, - 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, - 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, - 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, - 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, - 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, - 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, - 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, - 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, - 'STATS_SAMPLE_PAGES' => 1, - 'REPLICATE_IGNORE_DB' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, - 'REPLICATE_IGNORE_TABLE' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'REPLICATE_WILD_IGNORE_TABLE' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, - 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, - 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'RECURSIVE' => 3, - 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, - 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, - 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, - 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, - 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, - 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, - 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, - 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, - 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, - 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, - 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, - 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, - 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, - 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, - 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, - 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, - 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, - 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, - 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, - 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, - 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, - 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, - 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, - 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, - 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, - 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, - 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, - 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, - 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, - 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, - 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, - 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, - 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, - 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, - 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, - 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, - 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, - 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, - 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, - 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, - 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, - 'ST_POLYGONFROMWKB' => 33, - 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, - 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, - 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, - 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, - 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, - 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, - 'ST_MULTIPOINTFROMWKB' => 33, - 'ST_MULTIPOINTFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMariaDb100300.php b/src/Contexts/ContextMariaDb100300.php index b16260001..9fdc07a5e 100644 --- a/src/Contexts/ContextMariaDb100300.php +++ b/src/Contexts/ContextMariaDb100300.php @@ -1,365 +1,1132 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, 'XID' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, - 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, - 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, - 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, - 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, - 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, - 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, - 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, - 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, - 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, - 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, - 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, - 'TABLES' => 1, - 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, - 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, - 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SEQUENCE' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, - 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, - 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, - 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, - 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, - 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, - 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, - 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, - 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, - 'STATS_SAMPLE_PAGES' => 1, - 'REPLICATE_IGNORE_DB' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, - 'REPLICATE_IGNORE_TABLE' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'REPLICATE_WILD_IGNORE_TABLE' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, - 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXCEPT' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, - 'FLOAT8' => 3, 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, - 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, - 'SELECT' => 3, 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'INTERSECT' => 3, - 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, - 'RECURSIVE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, - 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, - 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, - 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, - 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, - 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, - 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, - 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, - 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, - 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, - 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, - 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, - 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, - 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, - 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, - 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, - 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, - 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, - 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, - 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, - 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, - 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, - 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, - 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, - 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, - 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, - 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, - 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, - 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, - 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, - 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, - 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, - 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, - 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, - 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, - 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, - 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, - 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, - 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, - 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, - 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, - 'ST_POLYGONFROMWKB' => 33, - 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, - 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, - 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, - 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, - 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, - 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, - 'ST_MULTIPOINTFROMWKB' => 33, - 'ST_MULTIPOINTFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMariaDb100400.php b/src/Contexts/ContextMariaDb100400.php new file mode 100644 index 000000000..f7ad1e407 --- /dev/null +++ b/src/Contexts/ContextMariaDb100400.php @@ -0,0 +1,1171 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_FRECHETDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_HAUSDORFFDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb100500.php b/src/Contexts/ContextMariaDb100500.php new file mode 100644 index 000000000..0f0b7395e --- /dev/null +++ b/src/Contexts/ContextMariaDb100500.php @@ -0,0 +1,1175 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_FRECHETDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_HAUSDORFFDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb100600.php b/src/Contexts/ContextMariaDb100600.php new file mode 100644 index 000000000..9efa5f9b9 --- /dev/null +++ b/src/Contexts/ContextMariaDb100600.php @@ -0,0 +1,1177 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb100700.php b/src/Contexts/ContextMariaDb100700.php new file mode 100644 index 000000000..d20a179f4 --- /dev/null +++ b/src/Contexts/ContextMariaDb100700.php @@ -0,0 +1,1181 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb100800.php b/src/Contexts/ContextMariaDb100800.php new file mode 100644 index 000000000..794fd7c5f --- /dev/null +++ b/src/Contexts/ContextMariaDb100800.php @@ -0,0 +1,1182 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb100900.php b/src/Contexts/ContextMariaDb100900.php new file mode 100644 index 000000000..93a4d5537 --- /dev/null +++ b/src/Contexts/ContextMariaDb100900.php @@ -0,0 +1,1179 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb101000.php b/src/Contexts/ContextMariaDb101000.php new file mode 100644 index 000000000..d7a89e703 --- /dev/null +++ b/src/Contexts/ContextMariaDb101000.php @@ -0,0 +1,1180 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb101100.php b/src/Contexts/ContextMariaDb101100.php new file mode 100644 index 000000000..58e70ff94 --- /dev/null +++ b/src/Contexts/ContextMariaDb101100.php @@ -0,0 +1,1180 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110000.php b/src/Contexts/ContextMariaDb110000.php new file mode 100644 index 000000000..77b0a39ba --- /dev/null +++ b/src/Contexts/ContextMariaDb110000.php @@ -0,0 +1,1181 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110100.php b/src/Contexts/ContextMariaDb110100.php new file mode 100644 index 000000000..21a879b57 --- /dev/null +++ b/src/Contexts/ContextMariaDb110100.php @@ -0,0 +1,1182 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110200.php b/src/Contexts/ContextMariaDb110200.php new file mode 100644 index 000000000..ec1421ae9 --- /dev/null +++ b/src/Contexts/ContextMariaDb110200.php @@ -0,0 +1,1185 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT_FILTER_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT_TO_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110300.php b/src/Contexts/ContextMariaDb110300.php new file mode 100644 index 000000000..7895baa58 --- /dev/null +++ b/src/Contexts/ContextMariaDb110300.php @@ -0,0 +1,1186 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT_FILTER_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT_TO_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'KDF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110400.php b/src/Contexts/ContextMariaDb110400.php new file mode 100644 index 000000000..2fc65a015 --- /dev/null +++ b/src/Contexts/ContextMariaDb110400.php @@ -0,0 +1,1186 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'WSREP_LAST_SEEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_LAST_WRITTEN_GTID' => Token::FLAG_KEYWORD, + 'WSREP_SYNC_WAIT_UPTO_GTID' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADD_MONTHS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BINLOG_GTID_POS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLUMN_LIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32C' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_HISTOGRAM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_COMPACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DETAILED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LOOSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_NORMALIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT_FILTER_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT_TO_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUERY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'KDF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LASTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTHB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_GTID_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MEDIAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NATURAL_SORT_KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NEXTVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NVL2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_CONT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENTILE_DISC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SETVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SFORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BOUNDARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTONSURFACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYS_GUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM_ORACLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110500.php b/src/Contexts/ContextMariaDb110500.php new file mode 100644 index 000000000..54b4ff506 --- /dev/null +++ b/src/Contexts/ContextMariaDb110500.php @@ -0,0 +1,1095 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110600.php b/src/Contexts/ContextMariaDb110600.php new file mode 100644 index 000000000..28d58eb07 --- /dev/null +++ b/src/Contexts/ContextMariaDb110600.php @@ -0,0 +1,1095 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMariaDb110700.php b/src/Contexts/ContextMariaDb110700.php new file mode 100644 index 000000000..cc9730dfa --- /dev/null +++ b/src/Contexts/ContextMariaDb110700.php @@ -0,0 +1,1102 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SEQUENCE' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXCEPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTERSECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OFFSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RECURSIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED VIA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUIDV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUIDV7' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VEC_DISTANCE_COSINE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VEC_DISTANCE_EUCLIDEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VEC_FROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VEC_TOTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMySql50000.php b/src/Contexts/ContextMySql50000.php index 5a8322b77..b147ea85f 100644 --- a/src/Contexts/ContextMySql50000.php +++ b/src/Contexts/ContextMySql50000.php @@ -1,286 +1,825 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, - 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'FAST' => 1, - 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'LAST' => 1, 'LOGS' => 1, - 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'TYPE' => 1, 'VIEW' => 1, - 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, - 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, - 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'PHASE' => 1, - 'QUERY' => 1, 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, - 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, - 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'RELOAD' => 1, - 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, - 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, - 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INVOKER' => 1, 'MIGRATE' => 1, - 'PARTIAL' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'RECOVER' => 1, 'RESTORE' => 1, - 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'STRIPED' => 1, - 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, - 'USE_FRM' => 1, 'VIRTUAL' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, - 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, - 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, - 'PROFILES' => 1, 'ROLLBACK' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, - 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'PACK_KEYS' => 1, 'RAID_TYPE' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, - 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, - 'VARIABLES' => 1, - 'BERKELEYDB' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, - 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, - 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, 'SQL_TSI_DAY' => 1, - 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'DES_KEY_FILE' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, - 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, - 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'MASTER_LOG_POS' => 1, - 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, - 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'USER_RESOURCES' => 1, - 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, - 'MASTER_SERVER_ID' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'SQL_TSI_FRAC_SECOND' => 1, - 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, - 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, - 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, - 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'OPTION' => 3, 'REGEXP' => 3, - 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SONAME' => 3, - 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESTRICT' => 3, - 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, - 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, - 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, - 'OPTIONALLY' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, - 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, - 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, - 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, - 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, - 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, - 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, - 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, - 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, - 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, - 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, - 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'SUBSTRING' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'GEOMETRYTYPE' => 33, - 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, - 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, - 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, - 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, - 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, - 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, - 'TIMESTAMPDIFF' => 33, - 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, - 'UNCOMPRESSED_LENGTH' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BDB' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BERKELEYDB' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FRAC_SECOND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INNOBASE' => Token::FLAG_KEYWORD, + 'INNODB' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONE_SHOT' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'RAID0' => Token::FLAG_KEYWORD, + 'RAID_CHUNKS' => Token::FLAG_KEYWORD, + 'RAID_CHUNKSIZE' => Token::FLAG_KEYWORD, + 'RAID_TYPE' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_FRAC_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'STRIPED' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'VIRTUAL' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SONAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMySql50100.php b/src/Contexts/ContextMySql50100.php index e4d353e6b..289a25a0b 100644 --- a/src/Contexts/ContextMySql50100.php +++ b/src/Contexts/ContextMySql50100.php @@ -1,311 +1,903 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, - 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'GOTO' => 1, 'HASH' => 1, - 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, - 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, - 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, - 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LABEL' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'QUERY' => 1, - 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, - 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, - 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, - 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, - 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, - 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, - 'STRING' => 1, 'TABLES' => 1, - 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, - 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, - 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STORAGE' => 1, 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXTENDED' => 1, 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, - 'MAXVALUE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, - 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, - 'PROFILES' => 1, 'REDOFILE' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'RAID_TYPE' => 1, - 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SCHEDULER' => 1, - 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, - 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'BERKELEYDB' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, - 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, - 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, - 'PRIVILEGES' => 1, 'REORGANISE' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, - 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, - 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, - 'MASTER_USER' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, - 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, - 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'PAGE_CHECKSUM' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'TRANSACTIONAL' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, - 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'SQL_TSI_FRAC_SECOND' => 1, - 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, - 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, - 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESTRICT' => 3, - 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, - 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, - 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, - 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'DECOD' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, - 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, - 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, - 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'ENCODE' => 33, 'EQUALS' => 33, - 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, - 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, - 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, - 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, - 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'SUBSTRING' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, - 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, - 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, - 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, - 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, - 'TIMESTAMPDIFF' => 33, - 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, - 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, - 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'MULTIPOINTFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTHORS' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BDB' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BERKELEYDB' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CONTRIBUTORS' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FRAC_SECOND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GOTO' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INNOBASE' => Token::FLAG_KEYWORD, + 'INNODB' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LABEL' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAXVALUE' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONE_SHOT' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PAGE_CHECKSUM' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITION' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'RAID0' => Token::FLAG_KEYWORD, + 'RAID_CHUNKS' => Token::FLAG_KEYWORD, + 'RAID_CHUNKSIZE' => Token::FLAG_KEYWORD, + 'RAID_TYPE' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANISE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEDULER' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_FRAC_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'STRIPED' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRANSACTIONAL' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'VIRTUAL' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMySql50500.php b/src/Contexts/ContextMySql50500.php index 2ef9b81c8..d724cca50 100644 --- a/src/Contexts/ContextMySql50500.php +++ b/src/Contexts/ContextMySql50500.php @@ -1,316 +1,914 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, - 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, - 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, - 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, - 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, - 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, - 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, - 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, - 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, - 'STRING' => 1, 'TABLES' => 1, - 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, - 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, - 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, - 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, - 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, - 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, - 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXTENDED' => 1, 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'READ_ONLY' => 1, - 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, - 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, - 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, - 'TABLESPACE' => 1, 'TABLE_NAME' => 1, - 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, - 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, - 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, - 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, - 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, - 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, - 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, - 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, - 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, - 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'CONSTRAINT_CATALOG' => 1, - 'SQL_TSI_FRAC_SECOND' => 1, - 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, - 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, - 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, - 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, - 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, - 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, - 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, - 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, - 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, - 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'SUBSTRING' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, - 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, - 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, - 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, - 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, - 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, - 'TIMESTAMPDIFF' => 33, - 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, - 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, - 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'MULTIPOINTFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTHORS' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CONTRIBUTORS' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FRAC_SECOND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INNOBASE' => Token::FLAG_KEYWORD, + 'INNODB' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONE_SHOT' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITION' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_FRAC_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'VIRTUAL' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMySql50600.php b/src/Contexts/ContextMySql50600.php index 5fa87862e..c99c7b9ea 100644 --- a/src/Contexts/ContextMySql50600.php +++ b/src/Contexts/ContextMySql50600.php @@ -1,345 +1,1012 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, - 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, - 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, - 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, - 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, - 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, - 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, - 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, - 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, - 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'ANALYSE' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, - 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, - 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, - 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, - 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, - 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, - 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, - 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, - 'VIRTUAL' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, - 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, - 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, - 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, - 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, - 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, - 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, - 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, - 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, - 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, - 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, - 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, - 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, - 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, - 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, - 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, - 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, - 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_POINTN' => 33, - 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, - 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, - 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, - 'ST_ISEMPTY' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, - 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, - 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, - 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, - 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, - 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, - 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, - 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, - 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, - 'SESSION_USER' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, - 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'CREATE_DIGEST' => 33, 'FROM_UNIXTIME' => 33, - 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, - 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, - 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_DIFFERENCE' => 33, - 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, - 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'ASYMMETRIC_SIGN' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, - 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, - 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, - 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_NUMGEOMETRIES' => 33, - 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'ASYMMETRIC_DERIVE' => 33, 'ASYMMETRIC_VERIFY' => 33, 'LINESTRINGFROMWKB' => 33, - 'MULTIPOINTFROMWKB' => 33, 'ST_POLYGONFROMWKB' => 33, - 'ASYMMETRIC_DECRYPT' => 33, 'ASYMMETRIC_ENCRYPT' => 33, 'MULTIPOINTFROMTEXT' => 33, - 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_POLYGONFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, - 'ST_NUMINTERIORRINGS' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'CREATE_DH_PARAMETERS' => 33, 'MULTIPOLYGONFROMTEXT' => 33, - 'ST_LINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, - 'CREATE_ASYMMETRIC_PUB_KEY' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, - 'CREATE_ASYMMETRIC_PRIV_KEY' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, - 'SQL_THREAD_WAIT_AFTER_GTIDS' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTHORS' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CONTRIBUTORS' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONE_SHOT' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'VIRTUAL' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQL_THREAD_WAIT_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMySql50700.php b/src/Contexts/ContextMySql50700.php index 6f24dc1b3..0bb8cd306 100644 --- a/src/Contexts/ContextMySql50700.php +++ b/src/Contexts/ContextMySql50700.php @@ -1,365 +1,1096 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, 'XID' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, - 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, - 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, - 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, - 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, - 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, - 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, - 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, - 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, - 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, - 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, - 'TABLES' => 1, - 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, - 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, - 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, - 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, - 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, - 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, - 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, - 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, - 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, - 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, - 'STATS_SAMPLE_PAGES' => 1, - 'REPLICATE_IGNORE_DB' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, - 'REPLICATE_IGNORE_TABLE' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'REPLICATE_WILD_IGNORE_TABLE' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, - 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, - 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, - 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, - 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, - 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, - 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, - 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, - 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, - 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, - 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, - 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, - 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, - 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, - 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, - 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, - 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, - 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, - 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, - 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, - 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, - 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, - 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, - 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, - 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, - 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, - 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, - 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, - 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, - 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, - 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, - 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, - 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, - 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, - 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, - 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, - 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, - 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, - 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, - 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, - 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, - 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, - 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, - 'ST_POLYGONFROMWKB' => 33, - 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, - 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, - 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, - 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, - 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, - 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, - 'ST_MULTIPOINTFROMWKB' => 33, - 'ST_MULTIPOINTFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMySql80000.php b/src/Contexts/ContextMySql80000.php index df581f55c..78d840b4b 100644 --- a/src/Contexts/ContextMySql80000.php +++ b/src/Contexts/ContextMySql80000.php @@ -1,365 +1,1118 @@ + * @phpstan-var non-empty-array */ - public static $KEYWORDS = [ - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, 'XID' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, - 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, - 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, - 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, - 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, - 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, - 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, - 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, - 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, - 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, - 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, - 'TABLES' => 1, - 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, - 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, - 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, - 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, 'PROFILES' => 1, - 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, - 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, - 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, - 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, - 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, - 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, - 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, - 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, - 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, - 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, - 'STATS_SAMPLE_PAGES' => 1, - 'REPLICATE_IGNORE_DB' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, - 'REPLICATE_IGNORE_TABLE' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'REPLICATE_WILD_IGNORE_TABLE' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, - 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, - 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, - 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, - 'ON UPDATE' => 7, 'UNION ALL' => 7, - 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, - 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, - 'PARTITION BY' => 7, 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, - 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, - 'INDEX DIRECTORY' => 7, 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, - 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'NATURAL LEFT OUTER JOIN' => 7, - 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, - 'MULTILINEPOINT' => 9, - 'MULTILINEPOLYGON' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - 'SPATIAL' => 19, - 'FULLTEXT' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, - 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'IS_UUID' => 33, 'QUARTER' => 33, - 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, - 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, - 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, - 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, - 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, - 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, - 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, - 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, - 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, - 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, - 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, - 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, - 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, - 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, - 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, - 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, - 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, - 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, - 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'BIN_TO_UUID' => 33, 'CHAR_LENGTH' => 33, - 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, - 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, - 'JSON_LENGTH' => 33, 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, - 'JSON_SEARCH' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, - 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, - 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, - 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, - 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, - 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, - 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'UUID_TO_BIN' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'JSON_EXTRACT' => 33, - 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, - 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, - 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, - 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, - 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, - 'INTERIORRINGN' => 33, 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, - 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, - 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, - 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, - 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, - 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, - 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, 'ST_MAKEENVELOPE' => 33, - 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, - 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, - 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, - 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, - 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, - 'ST_POLYGONFROMWKB' => 33, - 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, - 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, - 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, - 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, - 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, - 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, - 'ST_MULTIPOINTFROMWKB' => 33, - 'ST_MULTIPOINTFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'POINT' => 41, - 'POLYGON' => 41, - 'TIMESTAMP' => 41, - 'LINESTRING' => 41, - 'MULTILINESTRING' => 41, - 'GEOMETRYCOLLECTION' => 41, - - 'CHAR' => 43, - 'BINARY' => 43, - 'INTERVAL' => 43, + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTAINS' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSIST' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PERSIST_ONLY' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_RESET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN_TO_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUPING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_DISABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_ENABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_RESET_MEMBER_ACTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_AS_PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_MULTI_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_SINGLE_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALIDATION_REPORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_CURRENT_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_FRECHETDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_HAUSDORFFDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_TO_BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MEMBER OF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, ]; } diff --git a/src/Contexts/ContextMySql80100.php b/src/Contexts/ContextMySql80100.php new file mode 100644 index 000000000..81a24964b --- /dev/null +++ b/src/Contexts/ContextMySql80100.php @@ -0,0 +1,1108 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTAINS' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSIST' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PERSIST_ONLY' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_RESET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN_TO_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUPING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_DISABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_ENABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_RESET_MEMBER_ACTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_AS_PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_MULTI_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_SINGLE_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALIDATION_REPORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_CURRENT_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_FRECHETDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_HAUSDORFFDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_TO_BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MEMBER OF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMySql80200.php b/src/Contexts/ContextMySql80200.php new file mode 100644 index 000000000..d60709c15 --- /dev/null +++ b/src/Contexts/ContextMySql80200.php @@ -0,0 +1,1107 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTAINS' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSIST' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PERSIST_ONLY' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_RESET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN_TO_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUPING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_DISABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_ENABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_RESET_MEMBER_ACTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_AS_PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_MULTI_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_SINGLE_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALIDATION_REPORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_CURRENT_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_FRECHETDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_HAUSDORFFDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_TO_BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MEMBER OF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMySql80300.php b/src/Contexts/ContextMySql80300.php new file mode 100644 index 000000000..1b8eb3f01 --- /dev/null +++ b/src/Contexts/ContextMySql80300.php @@ -0,0 +1,1107 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTAINS' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_AUTO_POSITION' => Token::FLAG_KEYWORD, + 'MASTER_CONNECT_RETRY' => Token::FLAG_KEYWORD, + 'MASTER_DELAY' => Token::FLAG_KEYWORD, + 'MASTER_HEARTBEAT_PERIOD' => Token::FLAG_KEYWORD, + 'MASTER_HOST' => Token::FLAG_KEYWORD, + 'MASTER_LOG_FILE' => Token::FLAG_KEYWORD, + 'MASTER_LOG_POS' => Token::FLAG_KEYWORD, + 'MASTER_PASSWORD' => Token::FLAG_KEYWORD, + 'MASTER_PORT' => Token::FLAG_KEYWORD, + 'MASTER_RETRY_COUNT' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MASTER_SSL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CA' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CAPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CERT' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CIPHER' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRL' => Token::FLAG_KEYWORD, + 'MASTER_SSL_CRLPATH' => Token::FLAG_KEYWORD, + 'MASTER_SSL_KEY' => Token::FLAG_KEYWORD, + 'MASTER_USER' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSIST' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PERSIST_ONLY' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_BIND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MASTER_SSL_VERIFY_SERVER_CERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_RESET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN_TO_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUPING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_DISABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_ENABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_RESET_MEMBER_ACTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_AS_PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_MULTI_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_SINGLE_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALIDATION_REPORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_CURRENT_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_FRECHETDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_HAUSDORFFDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_TO_BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MEMBER OF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMySql80400.php b/src/Contexts/ContextMySql80400.php new file mode 100644 index 000000000..40b0ad4fb --- /dev/null +++ b/src/Contexts/ContextMySql80400.php @@ -0,0 +1,1095 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTO' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BERNOULLI' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTAINS' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'GTIDS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARSE_TREE' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PASSWORD' => Token::FLAG_KEYWORD, + 'PERSIST' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PERSIST_ONLY' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'S3' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MANUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARALLEL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'QUALIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLESAMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_ADD_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_MANAGED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_DELETE_SOURCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASYNCHRONOUS_CONNECTION_FAILOVER_RESET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN_TO_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAN_ACCESS_VIEW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CUME_DIST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DENSE_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIRST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT_PICO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_COLUMN_PRIVILEGES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_CREATE_OPTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_DD_INDEX_SUB_PART_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUPING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_DISABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_ENABLE_MEMBER_ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_GET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_RESET_MEMBER_ACTIONS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_AS_PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_COMMUNICATION_PROTOCOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SET_WRITE_CONCURRENCY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_MULTI_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_REPLICATION_SWITCH_TO_SINGLE_PRIMARY_MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ICU_VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AUTO_INCREMENT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_AVG_ROW_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECKSUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_CHECK_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_DD_CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_COMMENT_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_ENABLED_ROLE_JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_HOSTNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_USERNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_GET_VIEW_WARNING_OR_ERROR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_COLUMN_CARDINALITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_INDEX_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_ENABLED_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_IS_MANDATORY_ROLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_KEYS_DISABLED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_MAX_DATA_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_TABLE_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERNAL_UPDATE_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAYAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECTAGG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SCHEMA_VALIDATION_REPORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTH_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NTILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERCENT_RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_CURRENT_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PS_THREAD_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REGEXP_SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROLES_GRAPHML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_NUMBER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOURCE_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STATEMENT_DIGEST_TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_COLLECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_FRECHETDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_HAUSDORFFDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEINTERPOLATEPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGITUDE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTATDISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SWAPXY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TRANSFORM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_TO_BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MEMBER OF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMySql90000.php b/src/Contexts/ContextMySql90000.php new file mode 100644 index 000000000..88939ac1a --- /dev/null +++ b/src/Contexts/ContextMySql90000.php @@ -0,0 +1,1089 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTO' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BERNOULLI' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'GTIDS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARSE_TREE' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSIST' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PERSIST_ONLY' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'S3' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MANUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARALLEL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'QUALIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLESAMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN_TO_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRING_TO_VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_TO_BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VECTOR_DIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VECTOR_TO_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Contexts/ContextMySql90100.php b/src/Contexts/ContextMySql90100.php new file mode 100644 index 000000000..820296f70 --- /dev/null +++ b/src/Contexts/ContextMySql90100.php @@ -0,0 +1,1089 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'ACCOUNT' => Token::FLAG_KEYWORD, + 'ACTION' => Token::FLAG_KEYWORD, + 'AFTER' => Token::FLAG_KEYWORD, + 'AGGREGATE' => Token::FLAG_KEYWORD, + 'ALGORITHM' => Token::FLAG_KEYWORD, + 'ALWAYS' => Token::FLAG_KEYWORD, + 'ANALYSE' => Token::FLAG_KEYWORD, + 'ANY' => Token::FLAG_KEYWORD, + 'AT' => Token::FLAG_KEYWORD, + 'AUTO' => Token::FLAG_KEYWORD, + 'AUTOEXTEND_SIZE' => Token::FLAG_KEYWORD, + 'AUTO_INCREMENT' => Token::FLAG_KEYWORD, + 'AVG_ROW_LENGTH' => Token::FLAG_KEYWORD, + 'BACKUP' => Token::FLAG_KEYWORD, + 'BEGIN' => Token::FLAG_KEYWORD, + 'BERNOULLI' => Token::FLAG_KEYWORD, + 'BINLOG' => Token::FLAG_KEYWORD, + 'BLOCK' => Token::FLAG_KEYWORD, + 'BTREE' => Token::FLAG_KEYWORD, + 'BYTE' => Token::FLAG_KEYWORD, + 'CACHE' => Token::FLAG_KEYWORD, + 'CASCADED' => Token::FLAG_KEYWORD, + 'CATALOG_NAME' => Token::FLAG_KEYWORD, + 'CHAIN' => Token::FLAG_KEYWORD, + 'CHANGED' => Token::FLAG_KEYWORD, + 'CHANNEL' => Token::FLAG_KEYWORD, + 'CHECKSUM' => Token::FLAG_KEYWORD, + 'CIPHER' => Token::FLAG_KEYWORD, + 'CLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'CLIENT' => Token::FLAG_KEYWORD, + 'CLOSE' => Token::FLAG_KEYWORD, + 'CODE' => Token::FLAG_KEYWORD, + 'COLUMNS' => Token::FLAG_KEYWORD, + 'COLUMN_FORMAT' => Token::FLAG_KEYWORD, + 'COLUMN_NAME' => Token::FLAG_KEYWORD, + 'COMMENT' => Token::FLAG_KEYWORD, + 'COMMIT' => Token::FLAG_KEYWORD, + 'COMMITTED' => Token::FLAG_KEYWORD, + 'COMPACT' => Token::FLAG_KEYWORD, + 'COMPLETION' => Token::FLAG_KEYWORD, + 'COMPRESSED' => Token::FLAG_KEYWORD, + 'COMPRESSION' => Token::FLAG_KEYWORD, + 'CONCURRENT' => Token::FLAG_KEYWORD, + 'CONNECTION' => Token::FLAG_KEYWORD, + 'CONSISTENT' => Token::FLAG_KEYWORD, + 'CONSTRAINT_CATALOG' => Token::FLAG_KEYWORD, + 'CONSTRAINT_NAME' => Token::FLAG_KEYWORD, + 'CONSTRAINT_SCHEMA' => Token::FLAG_KEYWORD, + 'CONTEXT' => Token::FLAG_KEYWORD, + 'CPU' => Token::FLAG_KEYWORD, + 'CUBE' => Token::FLAG_KEYWORD, + 'CURRENT' => Token::FLAG_KEYWORD, + 'CURSOR_NAME' => Token::FLAG_KEYWORD, + 'DATA' => Token::FLAG_KEYWORD, + 'DATAFILE' => Token::FLAG_KEYWORD, + 'DEALLOCATE' => Token::FLAG_KEYWORD, + 'DEFAULT_AUTH' => Token::FLAG_KEYWORD, + 'DEFINER' => Token::FLAG_KEYWORD, + 'DELAY_KEY_WRITE' => Token::FLAG_KEYWORD, + 'DES_KEY_FILE' => Token::FLAG_KEYWORD, + 'DIAGNOSTICS' => Token::FLAG_KEYWORD, + 'DIRECTORY' => Token::FLAG_KEYWORD, + 'DISABLE' => Token::FLAG_KEYWORD, + 'DISCARD' => Token::FLAG_KEYWORD, + 'DISK' => Token::FLAG_KEYWORD, + 'DO' => Token::FLAG_KEYWORD, + 'DUMPFILE' => Token::FLAG_KEYWORD, + 'DUPLICATE' => Token::FLAG_KEYWORD, + 'DYNAMIC' => Token::FLAG_KEYWORD, + 'ENABLE' => Token::FLAG_KEYWORD, + 'END' => Token::FLAG_KEYWORD, + 'ENDS' => Token::FLAG_KEYWORD, + 'ENGINE' => Token::FLAG_KEYWORD, + 'ENGINES' => Token::FLAG_KEYWORD, + 'ERROR' => Token::FLAG_KEYWORD, + 'ERRORS' => Token::FLAG_KEYWORD, + 'ESCAPE' => Token::FLAG_KEYWORD, + 'EVENT' => Token::FLAG_KEYWORD, + 'EVENTS' => Token::FLAG_KEYWORD, + 'EVERY' => Token::FLAG_KEYWORD, + 'EXCHANGE' => Token::FLAG_KEYWORD, + 'EXECUTE' => Token::FLAG_KEYWORD, + 'EXPANSION' => Token::FLAG_KEYWORD, + 'EXPIRE' => Token::FLAG_KEYWORD, + 'EXPORT' => Token::FLAG_KEYWORD, + 'EXTENDED' => Token::FLAG_KEYWORD, + 'EXTENT_SIZE' => Token::FLAG_KEYWORD, + 'FAST' => Token::FLAG_KEYWORD, + 'FAULTS' => Token::FLAG_KEYWORD, + 'FIELDS' => Token::FLAG_KEYWORD, + 'FILE' => Token::FLAG_KEYWORD, + 'FILE_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'FILTER' => Token::FLAG_KEYWORD, + 'FIRST' => Token::FLAG_KEYWORD, + 'FLUSH' => Token::FLAG_KEYWORD, + 'FOLLOWS' => Token::FLAG_KEYWORD, + 'FOUND' => Token::FLAG_KEYWORD, + 'FULL' => Token::FLAG_KEYWORD, + 'FUNCTION' => Token::FLAG_KEYWORD, + 'GENERAL' => Token::FLAG_KEYWORD, + 'GLOBAL' => Token::FLAG_KEYWORD, + 'GRANTS' => Token::FLAG_KEYWORD, + 'GROUP_REPLICATION' => Token::FLAG_KEYWORD, + 'GTIDS' => Token::FLAG_KEYWORD, + 'HANDLER' => Token::FLAG_KEYWORD, + 'HASH' => Token::FLAG_KEYWORD, + 'HELP' => Token::FLAG_KEYWORD, + 'HOST' => Token::FLAG_KEYWORD, + 'HOSTS' => Token::FLAG_KEYWORD, + 'IDENTIFIED' => Token::FLAG_KEYWORD, + 'IGNORE_SERVER_IDS' => Token::FLAG_KEYWORD, + 'IMPORT' => Token::FLAG_KEYWORD, + 'INDEXES' => Token::FLAG_KEYWORD, + 'INITIAL_SIZE' => Token::FLAG_KEYWORD, + 'INSERT_METHOD' => Token::FLAG_KEYWORD, + 'INSTALL' => Token::FLAG_KEYWORD, + 'INVISIBLE' => Token::FLAG_KEYWORD, + 'INVOKER' => Token::FLAG_KEYWORD, + 'IO' => Token::FLAG_KEYWORD, + 'IO_THREAD' => Token::FLAG_KEYWORD, + 'IPC' => Token::FLAG_KEYWORD, + 'ISOLATION' => Token::FLAG_KEYWORD, + 'ISSUER' => Token::FLAG_KEYWORD, + 'KEY_BLOCK_SIZE' => Token::FLAG_KEYWORD, + 'LANGUAGE' => Token::FLAG_KEYWORD, + 'LAST' => Token::FLAG_KEYWORD, + 'LEAVES' => Token::FLAG_KEYWORD, + 'LESS' => Token::FLAG_KEYWORD, + 'LEVEL' => Token::FLAG_KEYWORD, + 'LIST' => Token::FLAG_KEYWORD, + 'LOCAL' => Token::FLAG_KEYWORD, + 'LOCKS' => Token::FLAG_KEYWORD, + 'LOGFILE' => Token::FLAG_KEYWORD, + 'LOGS' => Token::FLAG_KEYWORD, + 'MASTER' => Token::FLAG_KEYWORD, + 'MASTER_SERVER_ID' => Token::FLAG_KEYWORD, + 'MAX_CONNECTIONS_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_QUERIES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_ROWS' => Token::FLAG_KEYWORD, + 'MAX_SIZE' => Token::FLAG_KEYWORD, + 'MAX_STATEMENT_TIME' => Token::FLAG_KEYWORD, + 'MAX_UPDATES_PER_HOUR' => Token::FLAG_KEYWORD, + 'MAX_USER_CONNECTIONS' => Token::FLAG_KEYWORD, + 'MEDIUM' => Token::FLAG_KEYWORD, + 'MEMORY' => Token::FLAG_KEYWORD, + 'MERGE' => Token::FLAG_KEYWORD, + 'MESSAGE_TEXT' => Token::FLAG_KEYWORD, + 'MIGRATE' => Token::FLAG_KEYWORD, + 'MIN_ROWS' => Token::FLAG_KEYWORD, + 'MODE' => Token::FLAG_KEYWORD, + 'MODIFY' => Token::FLAG_KEYWORD, + 'MUTEX' => Token::FLAG_KEYWORD, + 'MYSQL_ERRNO' => Token::FLAG_KEYWORD, + 'NAME' => Token::FLAG_KEYWORD, + 'NAMES' => Token::FLAG_KEYWORD, + 'NATIONAL' => Token::FLAG_KEYWORD, + 'NCHAR' => Token::FLAG_KEYWORD, + 'NDB' => Token::FLAG_KEYWORD, + 'NDBCLUSTER' => Token::FLAG_KEYWORD, + 'NEVER' => Token::FLAG_KEYWORD, + 'NEW' => Token::FLAG_KEYWORD, + 'NEXT' => Token::FLAG_KEYWORD, + 'NO' => Token::FLAG_KEYWORD, + 'NODEGROUP' => Token::FLAG_KEYWORD, + 'NONBLOCKING' => Token::FLAG_KEYWORD, + 'NONE' => Token::FLAG_KEYWORD, + 'NO_WAIT' => Token::FLAG_KEYWORD, + 'NUMBER' => Token::FLAG_KEYWORD, + 'NVARCHAR' => Token::FLAG_KEYWORD, + 'OFFSET' => Token::FLAG_KEYWORD, + 'ONE' => Token::FLAG_KEYWORD, + 'ONLY' => Token::FLAG_KEYWORD, + 'OPEN' => Token::FLAG_KEYWORD, + 'OPTIONS' => Token::FLAG_KEYWORD, + 'OWNER' => Token::FLAG_KEYWORD, + 'PACK_KEYS' => Token::FLAG_KEYWORD, + 'PAGE' => Token::FLAG_KEYWORD, + 'PARSER' => Token::FLAG_KEYWORD, + 'PARSE_GCOL_EXPR' => Token::FLAG_KEYWORD, + 'PARSE_TREE' => Token::FLAG_KEYWORD, + 'PARTIAL' => Token::FLAG_KEYWORD, + 'PARTITIONING' => Token::FLAG_KEYWORD, + 'PARTITIONS' => Token::FLAG_KEYWORD, + 'PERSIST' => Token::FLAG_KEYWORD, + 'PERSISTENT' => Token::FLAG_KEYWORD, + 'PERSIST_ONLY' => Token::FLAG_KEYWORD, + 'PHASE' => Token::FLAG_KEYWORD, + 'PLUGIN' => Token::FLAG_KEYWORD, + 'PLUGINS' => Token::FLAG_KEYWORD, + 'PLUGIN_DIR' => Token::FLAG_KEYWORD, + 'PORT' => Token::FLAG_KEYWORD, + 'PRECEDES' => Token::FLAG_KEYWORD, + 'PREPARE' => Token::FLAG_KEYWORD, + 'PRESERVE' => Token::FLAG_KEYWORD, + 'PREV' => Token::FLAG_KEYWORD, + 'PRIVILEGES' => Token::FLAG_KEYWORD, + 'PROCESSLIST' => Token::FLAG_KEYWORD, + 'PROFILE' => Token::FLAG_KEYWORD, + 'PROFILES' => Token::FLAG_KEYWORD, + 'PROXY' => Token::FLAG_KEYWORD, + 'QUERY' => Token::FLAG_KEYWORD, + 'QUICK' => Token::FLAG_KEYWORD, + 'READ_ONLY' => Token::FLAG_KEYWORD, + 'REBUILD' => Token::FLAG_KEYWORD, + 'RECOVER' => Token::FLAG_KEYWORD, + 'REDOFILE' => Token::FLAG_KEYWORD, + 'REDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'REDUNDANT' => Token::FLAG_KEYWORD, + 'RELAY' => Token::FLAG_KEYWORD, + 'RELAYLOG' => Token::FLAG_KEYWORD, + 'RELAY_LOG_FILE' => Token::FLAG_KEYWORD, + 'RELAY_LOG_POS' => Token::FLAG_KEYWORD, + 'RELAY_THREAD' => Token::FLAG_KEYWORD, + 'RELOAD' => Token::FLAG_KEYWORD, + 'REMOVE' => Token::FLAG_KEYWORD, + 'REORGANIZE' => Token::FLAG_KEYWORD, + 'REPAIR' => Token::FLAG_KEYWORD, + 'REPEATABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_REWRITE_DB' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_DO_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATE_WILD_IGNORE_TABLE' => Token::FLAG_KEYWORD, + 'REPLICATION' => Token::FLAG_KEYWORD, + 'RESET' => Token::FLAG_KEYWORD, + 'RESTORE' => Token::FLAG_KEYWORD, + 'RESUME' => Token::FLAG_KEYWORD, + 'RETURNED_SQLSTATE' => Token::FLAG_KEYWORD, + 'RETURNS' => Token::FLAG_KEYWORD, + 'ROLLBACK' => Token::FLAG_KEYWORD, + 'ROLLUP' => Token::FLAG_KEYWORD, + 'ROUTINE' => Token::FLAG_KEYWORD, + 'ROW' => Token::FLAG_KEYWORD, + 'ROWS' => Token::FLAG_KEYWORD, + 'ROW_FORMAT' => Token::FLAG_KEYWORD, + 'RTREE' => Token::FLAG_KEYWORD, + 'S3' => Token::FLAG_KEYWORD, + 'SAVEPOINT' => Token::FLAG_KEYWORD, + 'SCHEDULE' => Token::FLAG_KEYWORD, + 'SCHEMA_NAME' => Token::FLAG_KEYWORD, + 'SECURITY' => Token::FLAG_KEYWORD, + 'SERIALIZABLE' => Token::FLAG_KEYWORD, + 'SERVER' => Token::FLAG_KEYWORD, + 'SESSION' => Token::FLAG_KEYWORD, + 'SHARE' => Token::FLAG_KEYWORD, + 'SHUTDOWN' => Token::FLAG_KEYWORD, + 'SIGNED' => Token::FLAG_KEYWORD, + 'SIMPLE' => Token::FLAG_KEYWORD, + 'SLAVE' => Token::FLAG_KEYWORD, + 'SLOW' => Token::FLAG_KEYWORD, + 'SNAPSHOT' => Token::FLAG_KEYWORD, + 'SOCKET' => Token::FLAG_KEYWORD, + 'SOME' => Token::FLAG_KEYWORD, + 'SONAME' => Token::FLAG_KEYWORD, + 'SOUNDS' => Token::FLAG_KEYWORD, + 'SOURCE' => Token::FLAG_KEYWORD, + 'SQL_AFTER_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_AFTER_MTS_GAPS' => Token::FLAG_KEYWORD, + 'SQL_BEFORE_GTIDS' => Token::FLAG_KEYWORD, + 'SQL_BUFFER_RESULT' => Token::FLAG_KEYWORD, + 'SQL_CACHE' => Token::FLAG_KEYWORD, + 'SQL_NO_CACHE' => Token::FLAG_KEYWORD, + 'SQL_THREAD' => Token::FLAG_KEYWORD, + 'SQL_TSI_DAY' => Token::FLAG_KEYWORD, + 'SQL_TSI_HOUR' => Token::FLAG_KEYWORD, + 'SQL_TSI_MINUTE' => Token::FLAG_KEYWORD, + 'SQL_TSI_MONTH' => Token::FLAG_KEYWORD, + 'SQL_TSI_QUARTER' => Token::FLAG_KEYWORD, + 'SQL_TSI_SECOND' => Token::FLAG_KEYWORD, + 'SQL_TSI_WEEK' => Token::FLAG_KEYWORD, + 'SQL_TSI_YEAR' => Token::FLAG_KEYWORD, + 'STACKED' => Token::FLAG_KEYWORD, + 'START' => Token::FLAG_KEYWORD, + 'STARTS' => Token::FLAG_KEYWORD, + 'STATS_AUTO_RECALC' => Token::FLAG_KEYWORD, + 'STATS_PERSISTENT' => Token::FLAG_KEYWORD, + 'STATS_SAMPLE_PAGES' => Token::FLAG_KEYWORD, + 'STATUS' => Token::FLAG_KEYWORD, + 'STOP' => Token::FLAG_KEYWORD, + 'STORAGE' => Token::FLAG_KEYWORD, + 'STRING' => Token::FLAG_KEYWORD, + 'SUBCLASS_ORIGIN' => Token::FLAG_KEYWORD, + 'SUBJECT' => Token::FLAG_KEYWORD, + 'SUBPARTITION' => Token::FLAG_KEYWORD, + 'SUBPARTITIONS' => Token::FLAG_KEYWORD, + 'SUPER' => Token::FLAG_KEYWORD, + 'SUSPEND' => Token::FLAG_KEYWORD, + 'SWAPS' => Token::FLAG_KEYWORD, + 'SWITCHES' => Token::FLAG_KEYWORD, + 'TABLES' => Token::FLAG_KEYWORD, + 'TABLESPACE' => Token::FLAG_KEYWORD, + 'TABLE_CHECKSUM' => Token::FLAG_KEYWORD, + 'TABLE_NAME' => Token::FLAG_KEYWORD, + 'TEMPORARY' => Token::FLAG_KEYWORD, + 'TEMPTABLE' => Token::FLAG_KEYWORD, + 'THAN' => Token::FLAG_KEYWORD, + 'TRANSACTION' => Token::FLAG_KEYWORD, + 'TRIGGERS' => Token::FLAG_KEYWORD, + 'TYPE' => Token::FLAG_KEYWORD, + 'TYPES' => Token::FLAG_KEYWORD, + 'UNCOMMITTED' => Token::FLAG_KEYWORD, + 'UNDEFINED' => Token::FLAG_KEYWORD, + 'UNDOFILE' => Token::FLAG_KEYWORD, + 'UNDO_BUFFER_SIZE' => Token::FLAG_KEYWORD, + 'UNICODE' => Token::FLAG_KEYWORD, + 'UNINSTALL' => Token::FLAG_KEYWORD, + 'UNKNOWN' => Token::FLAG_KEYWORD, + 'UNTIL' => Token::FLAG_KEYWORD, + 'UPGRADE' => Token::FLAG_KEYWORD, + 'USER_RESOURCES' => Token::FLAG_KEYWORD, + 'USE_FRM' => Token::FLAG_KEYWORD, + 'VALIDATION' => Token::FLAG_KEYWORD, + 'VALUE' => Token::FLAG_KEYWORD, + 'VARIABLES' => Token::FLAG_KEYWORD, + 'VIEW' => Token::FLAG_KEYWORD, + 'WAIT' => Token::FLAG_KEYWORD, + 'WARNINGS' => Token::FLAG_KEYWORD, + 'WITHOUT' => Token::FLAG_KEYWORD, + 'WORK' => Token::FLAG_KEYWORD, + 'WRAPPER' => Token::FLAG_KEYWORD, + 'X509' => Token::FLAG_KEYWORD, + 'XA' => Token::FLAG_KEYWORD, + 'XID' => Token::FLAG_KEYWORD, + 'ACCESSIBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ALTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ANALYZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ASENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BEFORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BETWEEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BOTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASCADE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CHECK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COLUMN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONDITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONSTRAINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CONTINUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CREATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CROSS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'CURSOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DATABASES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DAY_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DECLARE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELAYED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DESCRIBE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DETERMINISTIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DISTINCTROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DIV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DROP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'DUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EACH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ELSEIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ENCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ESCAPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'EXPLAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FALSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FETCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FORCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FOREIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'FROM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GENERATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GRANT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'GROUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HAVING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HIGH_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'HOUR_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IGNORE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INNER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INOUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INSENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'INTO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IO_BEFORE_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'IS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ITERATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'KILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEADING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LEAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LIMIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LINES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOOP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'LOW_PRIORITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MANUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MAXVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MINUTE_SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'MODIFIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NATURAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NO_WRITE_TO_BINLOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIMIZER_COSTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OPTIONALLY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ORDER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OUTFILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'OVER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARALLEL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRECISION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PRIMARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PROCEDURE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'PURGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'QUALIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RANGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'READ_WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REFERENCES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REGEXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RENAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REQUIRE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESTRICT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RETURN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'REVOKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RLIKE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SCHEMAS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SECOND_MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SELECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SENSITIVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SEPARATOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SHOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SIGNAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SPECIFIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLEXCEPTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLSTATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQLWARNING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_BIG_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_CALC_FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SQL_SMALL_RESULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'SSL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STARTING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STORED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'STRAIGHT_JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TABLESAMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TERMINATED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'THEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRAILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRIGGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'TRUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNDO' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNLOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UNSIGNED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USAGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'USING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARCHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'VIRTUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHEN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WHILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'WRITE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'YEAR_MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'ZEROFILL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'AND CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'AND NO CHAIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'COALESCE PARTITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CONTAINS SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'CROSS JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATA DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARACTER SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DEFAULT COLLATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DISABLE ON SLAVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ENCLOSED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ESCAPED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR EACH ROW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FOR UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'FULL OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GENERATED ALWAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'GROUP BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'IF NOT EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INDEX DIRECTORY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'INNER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LANGUAGE SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LESS THAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR HASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LINEAR KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOAD DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'LOCK IN SHARE MODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'MODIFIES SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL LEFT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NATURAL RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO ACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO RELEASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NO SQL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'NOT NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION NOT PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON COMPLETION PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON DELETE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON SCHEDULE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ON UPDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'OR REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ORDER BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'PARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'READS SQL DATA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'RIGHT OUTER JOIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SELECT TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET NULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SET PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SQL SECURITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'START TRANSACTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'STARTING BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'SUBPARTITION BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'TERMINATED BY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION ALL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'UNION DISTINCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH CONSISTENT SNAPSHOT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH PARSER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'WITH ROLLUP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BOOLEAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'DATETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'ENUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'FIXED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'GEOMETRY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'JSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTILINEPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'MULTISET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'SERIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'TEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'XML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'BIGINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DECIMAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'DOUBLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FLOAT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INT8' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'INTEGER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONGTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MEDIUMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'MIDDLEINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'NUMERIC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'REAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'SMALLINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYBLOB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'TINYTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE, + 'BINARY VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'CHARACTER VARYING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'LONG VARCHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_DATA_TYPE, + 'FULLTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_KEY, + 'FOREIGN KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'FULLTEXT KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'IDENTIFIED WITH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'INDEX KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'PRIMARY KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'SPATIAL KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'UNIQUE KEY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + 'ABS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ACOS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ADDTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AGAINST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ANY_VALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASCII' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ATAN2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'AVG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BENCHMARK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIN_TO_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_AND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_OR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BIT_XOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEIL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CEILING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARACTER_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHARSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COALESCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COERCIBILITY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COLLATION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONCAT_WS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONNECTION_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT_TZ' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CRC32' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CURTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DATE_SUB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFMONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DAYOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DECODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DEGREES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_DECRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DES_ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ELT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCODE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENCRYPT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXPORT_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'EXTRACTVALUE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIELD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FIND_IN_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FLOOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FOUND_ROWS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_UNIXTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'FROM_VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GET_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GLENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GREATEST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GROUP_CONCAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBSET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'GTID_SUBTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'HOUR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IFNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET6_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_ATON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INET_NTOA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISNULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_FREE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_COMPAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV4_MAPPED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_IPV6' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_USED_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'IS_UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_APPEND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_ARRAY_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_CONTAINS_PATH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_DEPTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_EXTRACT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_KEYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_MERGE_PRESERVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_OBJECT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_PRETTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REMOVE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SEARCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_FREE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_STORAGE_SIZE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_TYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_UNQUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'JSON_VALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LAST_INSERT_ID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LEAST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOAD_FILE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG10' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOG2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LOWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'LTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKEDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKETIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAKE_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MASTER_POS_WAIT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MAX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVEREDBY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRCOVERS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRDISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBREQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRINTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBROVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRTOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MBRWITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MD5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MICROSECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MINUTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MONTHNAME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NAME_CONST' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NOW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NULLIF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OCTET_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OLD_PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PASSWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_ADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PERIOD_DIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'PI' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POSITION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POW' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'POWER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUARTER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'QUOTE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RADIANS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RAND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RANDOM_BYTES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_ALL_LOCKS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RELEASE_LOCK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'REVERSE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROUND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ROW_COUNT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RPAD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'RTRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SECOND' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SEC_TO_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SESSION_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA1' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SHA2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SLEEP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SOUNDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SPACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SQRT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STDDEV_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRCMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STRING_TO_VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'STR_TO_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_AREA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASBINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ASWKT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_BUFFER_STRATEGY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CENTROID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONTAINS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CONVEXHULL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_CROSSES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DIMENSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISJOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_DISTANCE_SPHERE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENDPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EQUALS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_EXTERIORRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMTXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMCOLLFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMETRYTYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMGEOJSON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_GEOMFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERIORRINGN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_INTERSECTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISCLOSED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISEMPTY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISSIMPLE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_ISVALID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LATFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_LONGFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MAKEENVELOPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MLINEFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MPOLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTILINESTRINGFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_MULTIPOLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMGEOMETRIES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMINTERIORRINGS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_NUMPOINTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_OVERLAPS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMGEOHASH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POINTN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMTEXT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_POLYGONFROMWKB' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SIMPLIFY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SRID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_STARTPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_SYMDIFFERENCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_UNION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_VALIDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'ST_Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBSTRING_INDEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUBTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SUM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSDATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'SYSTEM_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TAN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMEDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPADD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMPDIFF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_FORMAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TIME_TO_SEC' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TOUCHES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_BASE64' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_DAYS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_SECONDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TO_VECTOR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'TRUNCATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UCASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNCOMPRESSED_LENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNHEX' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UNIX_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPDATEXML' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UPPER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_SHORT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'UUID_TO_BIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VALIDATE_PASSWORD_STRENGTH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VARIANCE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_POP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VAR_SAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VECTOR_DIM' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VECTOR_TO_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'VERSION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_FOR_EXECUTED_GTID_SET' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKDAY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEEKOFYEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WEIGHT_STRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'WITHIN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'X' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'Y' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'YEARWEEK' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + 'CONVERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'CURRENT_USER' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DATABASE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'DEFAULT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'EXISTS' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IF' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'INSERT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LEFT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'LOCALTIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MATCH' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'MOD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPEAT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'REPLACE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'RIGHT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'SCHEMA' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'UTC_TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'VALUES' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_FUNCTION, + 'NOT IN' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_FUNCTION, + 'DATE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'GEOMETRYCOLLECTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'LINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTILINESTRING' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'MULTIPOLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POINT' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'POLYGON' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIME' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'TIMESTAMP' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'YEAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'BINARY' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'CHAR' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + 'INTERVAL' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_DATA_TYPE | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/src/Core.php b/src/Core.php deleted file mode 100644 index 1965a2f74..000000000 --- a/src/Core.php +++ /dev/null @@ -1,47 +0,0 @@ -strict) { - throw $error; - } - $this->errors[] = $error; - } -} diff --git a/src/Exceptions/LexerException.php b/src/Exceptions/LexerException.php index 7dd85a494..3ad0328ef 100644 --- a/src/Exceptions/LexerException.php +++ b/src/Exceptions/LexerException.php @@ -1,45 +1,36 @@ ch = $ch; $this->pos = $pos; } diff --git a/src/Exceptions/LoaderException.php b/src/Exceptions/LoaderException.php deleted file mode 100644 index d80987621..000000000 --- a/src/Exceptions/LoaderException.php +++ /dev/null @@ -1,37 +0,0 @@ -name = $name; - } -} diff --git a/src/Exceptions/ParserException.php b/src/Exceptions/ParserException.php index 575eeb1a0..bad071397 100644 --- a/src/Exceptions/ParserException.php +++ b/src/Exceptions/ParserException.php @@ -1,39 +1,31 @@ token = $token; } } diff --git a/src/Lexer.php b/src/Lexer.php index 7fc1a75db..0c152759d 100644 --- a/src/Lexer.php +++ b/src/Lexer.php @@ -1,133 +1,102 @@ list; - } + if (Context::$keywords === []) { + Context::load(); + } - /** - * Constructor. - * - * @param string|UtfString $str the query to be lexed - * @param bool $strict whether strict mode should be - * enabled or not - * @param string $delimiter the delimiter to be used - */ - public function __construct($str, $strict = false, $delimiter = null) - { // `strlen` is used instead of `mb_strlen` because the lexer needs to // parse each byte of the input. $len = $str instanceof UtfString ? $str->length() : strlen($str); - // For multi-byte strings, a new instance of `UtfString` is - // initialized (only if `UtfString` usage is forced. - if (! $str instanceof UtfString && USE_UTF_STRINGS && $len !== mb_strlen($str, 'UTF-8')) { + // For multi-byte strings, a new instance of `UtfString` is initialized. + if (! $str instanceof UtfString && $len !== mb_strlen($str, 'UTF-8')) { $str = new UtfString($str); } @@ -183,9 +134,7 @@ public function __construct($str, $strict = false, $delimiter = null) $this->strict = $strict; // Setting the delimiter. - $this->setDelimiter( - ! empty($delimiter) ? $delimiter : static::$DEFAULT_DELIMITER - ); + $this->setDelimiter(! empty($delimiter) ? $delimiter : static::$defaultDelimiter); $this->lex(); } @@ -195,7 +144,7 @@ public function __construct($str, $strict = false, $delimiter = null) * * @param string $delimiter the new delimiter */ - public function setDelimiter($delimiter) + public function setDelimiter(string $delimiter): void { $this->delimiter = $delimiter; $this->delimiterLen = strlen($delimiter); @@ -204,7 +153,7 @@ public function setDelimiter($delimiter) /** * Parses the string and extracts lexemes. */ - public function lex() + public function lex(): void { // TODO: Sometimes, static::parse* functions make unnecessary calls to // is* functions. For a better performance, some rules can be deduced @@ -219,58 +168,43 @@ public function lex() /** * Last processed token. - * - * @var Token */ $lastToken = null; for ($this->last = 0, $lastIdx = 0; $this->last < $this->len; $lastIdx = ++$this->last) { - /** - * The new token. - * - * @var Token - */ - $token = null; - - foreach (static::$PARSER_METHODS as $method) { - if ($token = $this->$method()) { - break; - } - } + $token = $this->parse(); if ($token === null) { // @assert($this->last === $lastIdx); $token = new Token($this->str[$this->last]); - $this->error( - 'Unexpected character.', - $this->str[$this->last], - $this->last - ); - } elseif ($lastToken !== null - && $token->type === Token::TYPE_SYMBOL + $this->error('Unexpected character.', $this->str[$this->last], $this->last); + } elseif ( + $lastToken !== null + && $token->type === TokenType::Symbol && $token->flags & Token::FLAG_SYMBOL_VARIABLE && ( - $lastToken->type === Token::TYPE_STRING + $lastToken->type === TokenType::String || ( - $lastToken->type === Token::TYPE_SYMBOL + $lastToken->type === TokenType::Symbol && $lastToken->flags & Token::FLAG_SYMBOL_BACKTICK ) ) ) { // Handles ```... FROM 'user'@'%' ...```. $lastToken->token .= $token->token; - $lastToken->type = Token::TYPE_SYMBOL; + $lastToken->type = TokenType::Symbol; $lastToken->flags = Token::FLAG_SYMBOL_USER; $lastToken->value .= '@' . $token->value; continue; - } elseif ($lastToken !== null - && $token->type === Token::TYPE_KEYWORD - && $lastToken->type === Token::TYPE_OPERATOR + } elseif ( + $lastToken !== null + && $token->type === TokenType::Keyword + && $lastToken->type === TokenType::Operator && $lastToken->value === '.' ) { // Handles ```... tbl.FROM ...```. In this case, FROM is not // a reserved word. - $token->type = Token::TYPE_NONE; + $token->type = TokenType::None; $token->flags = 0; $token->value = $token->token; } @@ -280,49 +214,44 @@ public function lex() $list->tokens[$list->count++] = $token; // Handling delimiters. - if ($token->type === Token::TYPE_NONE && $token->value === 'DELIMITER') { + if ($token->type === TokenType::None && $token->value === 'DELIMITER') { if ($this->last + 1 >= $this->len) { - $this->error( - 'Expected whitespace(s) before delimiter.', - '', - $this->last + 1 - ); + $this->error('Expected whitespace(s) before delimiter.', '', $this->last + 1); continue; } // Skipping last R (from `delimiteR`) and whitespaces between // the keyword `DELIMITER` and the actual delimiter. $pos = ++$this->last; - if (($token = $this->parseWhitespace()) !== null) { + $token = $this->parseWhitespace(); + + if ($token !== null) { $token->position = $pos; $list->tokens[$list->count++] = $token; } // Preparing the token that holds the new delimiter. if ($this->last + 1 >= $this->len) { - $this->error( - 'Expected delimiter.', - '', - $this->last + 1 - ); + $this->error('Expected delimiter.', '', $this->last + 1); continue; } + $pos = $this->last + 1; // Parsing the delimiter. - $this->delimiter = null; + $this->delimiter = ''; $delimiterLen = 0; - while (++$this->last < $this->len && ! Context::isWhitespace($this->str[$this->last]) && $delimiterLen < 15) { + while ( + ++$this->last < $this->len + && ! Context::isWhitespace($this->str[$this->last]) + && $delimiterLen < 15 + ) { $this->delimiter .= $this->str[$this->last]; ++$delimiterLen; } - if (empty($this->delimiter)) { - $this->error( - 'Expected delimiter.', - '', - $this->last - ); + if ($this->delimiter === '') { + $this->error('Expected delimiter.', '', $this->last); $this->delimiter = ';'; } @@ -330,7 +259,7 @@ public function lex() // Saving the delimiter and its token. $this->delimiterLen = strlen($this->delimiter); - $token = new Token($this->delimiter, Token::TYPE_DELIMITER); + $token = new Token($this->delimiter, TokenType::Delimiter); $token->position = $pos; $list->tokens[$list->count++] = $token; } @@ -339,10 +268,95 @@ public function lex() } // Adding a final delimiter to mark the ending. - $list->tokens[$list->count++] = new Token(null, Token::TYPE_DELIMITER); + $list->tokens[$list->count++] = new Token('', TokenType::Delimiter); // Saving the tokens list. $this->list = $list; + + $this->solveAmbiguityOnStarOperator(); + $this->solveAmbiguityOnFunctionKeywords(); + } + + /** + * Resolves the ambiguity when dealing with the "*" operator. + * + * In SQL statements, the "*" operator can be an arithmetic operator (like in 2*3) or an SQL wildcard (like in + * SELECT a.* FROM ...). To solve this ambiguity, the solution is to find the next token, excluding whitespaces and + * comments, right after the "*" position. The "*" is for sure an SQL wildcard if the next token found is any of: + * - "FROM" (the FROM keyword like in "SELECT * FROM..."); + * - "USING" (the USING keyword like in "DELETE table_name.* USING..."); + * - "," (a comma separator like in "SELECT *, field FROM..."); + * - ")" (a closing parenthesis like in "COUNT(*)"). + * This methods will change the flag of the "*" tokens when any of those condition above is true. Otherwise, the + * default flag (arithmetic) will be kept. + */ + private function solveAmbiguityOnStarOperator(): void + { + $iBak = $this->list->idx; + while (($starToken = $this->list->getNextOfTypeAndValue(TokenType::Operator, '*')) !== null) { + // getNext() already gets rid of whitespaces and comments. + $next = $this->list->getNext(); + + if ($next === null) { + continue; + } + + if ( + ($next->type !== TokenType::Keyword || ! in_array($next->value, ['FROM', 'USING'], true)) + && ($next->type !== TokenType::Operator || ! in_array($next->value, [',', ')'], true)) + ) { + continue; + } + + $starToken->flags = Token::FLAG_OPERATOR_SQL; + } + + $this->list->idx = $iBak; + } + + /** + * Resolves the ambiguity when dealing with the functions keywords. + * + * In SQL statements, the function keywords might be used as table names or columns names. + * To solve this ambiguity, the solution is to find the next token, excluding whitespaces and + * comments, right after the function keyword position. The function keyword is for sure used + * as column name or table name if the next token found is any of: + * + * - "FROM" (the FROM keyword like in "SELECT Country x, AverageSalary avg FROM..."); + * - "WHERE" (the WHERE keyword like in "DELETE FROM emp x WHERE x.salary = 20"); + * - "SET" (the SET keyword like in "UPDATE Country x, City y set x.Name=x.Name"); + * - "," (a comma separator like 'x,' in "UPDATE Country x, City y set x.Name=x.Name"); + * - "." (a dot separator like in "x.asset_id FROM (SELECT evt.asset_id FROM evt)". + * - "NULL" (when used as a table alias like in "avg.col FROM (SELECT ev.col FROM ev) avg"). + * + * This method will change the flag of the function keyword tokens when any of those + * condition above is true. Otherwise, the + * default flag (function keyword) will be kept. + */ + private function solveAmbiguityOnFunctionKeywords(): void + { + $iBak = $this->list->idx; + $keywordFunction = TokenType::Keyword->value | Token::FLAG_KEYWORD_FUNCTION; + while (($keywordToken = $this->list->getNextOfTypeAndFlag(TokenType::Keyword, $keywordFunction)) !== null) { + $next = $this->list->getNext(); + if ( + ($next->type !== TokenType::Keyword + || ! in_array($next->value, self::KEYWORD_NAME_INDICATORS, true) + ) + && ($next->type !== TokenType::Operator + || ! in_array($next->value, self::OPERATOR_NAME_INDICATORS, true) + ) + && ($next->value !== '') + ) { + continue; + } + + $keywordToken->type = TokenType::None; + $keywordToken->flags = Token::FLAG_NONE; + $keywordToken->keyword = $keywordToken->value; + } + + $this->list->idx = $iBak; } /** @@ -353,46 +367,43 @@ public function lex() * @param int $pos the position of the character * @param int $code the code of the error * - * @throws LexerException throws the exception, if strict mode is enabled + * @throws LexerException throws the exception, if strict mode is enabled. */ - public function error($msg, $str = '', $pos = 0, $code = 0) + public function error(string $msg, string $str = '', int $pos = 0, int $code = 0): void { $error = new LexerException( Translator::gettext($msg), $str, $pos, - $code + $code, ); - parent::error($error); + + if ($this->strict) { + throw $error; + } + + $this->errors[] = $error; } /** * Parses a keyword. - * - * @return null|Token */ - public function parseKeyword() + public function parseKeyword(): Token|null { $token = ''; /** * Value to be returned. - * - * @var Token */ $ret = null; /** * The value of `$this->last` where `$token` ends in `$this->str`. - * - * @var int */ $iEnd = $this->last; /** * Whether last parsed character is a whitespace. - * - * @var bool */ $lastSpace = false; @@ -404,22 +415,25 @@ public function parseKeyword() --$j; // The size of the keyword didn't increase. continue; } + $lastSpace = true; } else { $lastSpace = false; } $token .= $this->str[$this->last]; - if (($this->last + 1 === $this->len || Context::isSeparator($this->str[$this->last + 1])) - && $flags = Context::isKeyword($token) - ) { - $ret = new Token($token, Token::TYPE_KEYWORD, $flags); - $iEnd = $this->last; + $flags = Context::isKeyword($token); - // We don't break so we find longest keyword. - // For example, `OR` and `ORDER` have a common prefix `OR`. - // If we stopped at `OR`, the parsing would be invalid. + if (($this->last + 1 !== $this->len && ! Context::isSeparator($this->str[$this->last + 1])) || ! $flags) { + continue; } + + $ret = new Token($token, TokenType::Keyword, $flags); + $iEnd = $this->last; + + // We don't break so we find longest keyword. + // For example, `OR` and `ORDER` have a common prefix `OR`. + // If we stopped at `OR`, the parsing would be invalid. } $this->last = $iEnd; @@ -429,34 +443,30 @@ public function parseKeyword() /** * Parses a label. - * - * @return null|Token */ - public function parseLabel() + public function parseLabel(): Token|null { $token = ''; /** * Value to be returned. - * - * @var Token */ $ret = null; /** * The value of `$this->last` where `$token` ends in `$this->str`. - * - * @var int */ $iEnd = $this->last; for ($j = 1; $j < Context::LABEL_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { if ($this->str[$this->last] === ':' && $j > 1) { // End of label $token .= $this->str[$this->last]; - $ret = new Token($token, Token::TYPE_LABEL); + $ret = new Token($token, TokenType::Label); $iEnd = $this->last; break; - } elseif (Context::isWhitespace($this->str[$this->last]) && $j > 1) { + } + + if (Context::isWhitespace($this->str[$this->last]) && $j > 1) { // Whitespace between label and : // The size of the keyword didn't increase. --$j; @@ -464,6 +474,7 @@ public function parseLabel() // Any other separator break; } + $token .= $this->str[$this->last]; } @@ -474,33 +485,31 @@ public function parseLabel() /** * Parses an operator. - * - * @return null|Token */ - public function parseOperator() + public function parseOperator(): Token|null { $token = ''; /** * Value to be returned. - * - * @var Token */ $ret = null; /** * The value of `$this->last` where `$token` ends in `$this->str`. - * - * @var int */ $iEnd = $this->last; for ($j = 1; $j < Context::OPERATOR_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { $token .= $this->str[$this->last]; - if ($flags = Context::isOperator($token)) { - $ret = new Token($token, Token::TYPE_OPERATOR, $flags); - $iEnd = $this->last; + $flags = Context::isOperator($token); + + if (! $flags) { + continue; } + + $ret = new Token($token, TokenType::Operator, $flags); + $iEnd = $this->last; } $this->last = $iEnd; @@ -510,10 +519,8 @@ public function parseOperator() /** * Parses a whitespace. - * - * @return null|Token */ - public function parseWhitespace() + public function parseWhitespace(): Token|null { $token = $this->str[$this->last]; @@ -527,68 +534,79 @@ public function parseWhitespace() --$this->last; - return new Token($token, Token::TYPE_WHITESPACE); + return new Token($token, TokenType::Whitespace); } /** * Parses a comment. - * - * @return null|Token */ - public function parseComment() + public function parseComment(): Token|null { $iBak = $this->last; $token = $this->str[$this->last]; // Bash style comments. (#comment\n) - if (Context::isComment($token)) { - while (++$this->last < $this->len - && $this->str[$this->last] !== "\n" - ) { + if (Context::isComment($token) !== null) { + while (++$this->last < $this->len && $this->str[$this->last] !== "\n") { $token .= $this->str[$this->last]; } + // Include trailing \n as whitespace token if ($this->last < $this->len) { --$this->last; } - return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_BASH); + return new Token($token, TokenType::Comment, Token::FLAG_COMMENT_BASH); } // C style comments. (/*comment*\/) if (++$this->last < $this->len) { $token .= $this->str[$this->last]; - if (Context::isComment($token)) { + if (Context::isComment($token) !== null) { + // There might be a conflict with "*" operator here, when string is "*/*". + // This can occurs in the following statements: + // - "SELECT */* comment */ FROM ..." + // - "SELECT 2*/* comment */3 AS `six`;" + $next = $this->last + 1; + if (($next < $this->len) && $this->str[$next] === '*' && $token === '*/') { + // Conflict in "*/*": first "*" was not for ending a comment. + // Stop here and let other parsing method define the true behavior of that first star. + $this->last = $iBak; + + return null; + } + $flags = Token::FLAG_COMMENT_C; // This comment already ended. It may be a part of a // previous MySQL specific command. if ($token === '*/') { - return new Token($token, Token::TYPE_COMMENT, $flags); + return new Token($token, TokenType::Comment, $flags); } // Checking if this is a MySQL-specific command. - if ($this->last + 1 < $this->len - && $this->str[$this->last + 1] === '!' - ) { + if ($this->last + 1 < $this->len && $this->str[$this->last + 1] === '!') { $flags |= Token::FLAG_COMMENT_MYSQL_CMD; $token .= $this->str[++$this->last]; - while (++$this->last < $this->len + while ( + ++$this->last < $this->len && $this->str[$this->last] >= '0' && $this->str[$this->last] <= '9' ) { $token .= $this->str[$this->last]; } + --$this->last; // We split this comment and parse only its beginning // here. - return new Token($token, Token::TYPE_COMMENT, $flags); + return new Token($token, TokenType::Comment, $flags); } // Parsing the comment. - while (++$this->last < $this->len + while ( + ++$this->last < $this->len && ( $this->str[$this->last - 1] !== '*' || $this->str[$this->last] !== '/' @@ -602,7 +620,7 @@ public function parseComment() $token .= $this->str[$this->last]; } - return new Token($token, Token::TYPE_COMMENT, $flags); + return new Token($token, TokenType::Comment, $flags); } } @@ -614,21 +632,21 @@ public function parseComment() --$this->last; $end = true; } - if (Context::isComment($token, $end)) { + + if (Context::isComment($token, $end) !== null) { // Checking if this comment did not end already (```--\n```). if ($this->str[$this->last] !== "\n") { - while (++$this->last < $this->len - && $this->str[$this->last] !== "\n" - ) { + while (++$this->last < $this->len && $this->str[$this->last] !== "\n") { $token .= $this->str[$this->last]; } } + // Include trailing \n as whitespace token if ($this->last < $this->len) { --$this->last; } - return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_SQL); + return new Token($token, TokenType::Comment, Token::FLAG_COMMENT_SQL); } $this->last = $iBak; @@ -638,10 +656,8 @@ public function parseComment() /** * Parses a boolean. - * - * @return null|Token */ - public function parseBool() + public function parseBool(): Token|null { if ($this->last + 3 >= $this->len) { // At least `min(strlen('TRUE'), strlen('FALSE'))` characters are @@ -654,11 +670,13 @@ public function parseBool() . $this->str[++$this->last] . $this->str[++$this->last]; // _TRUE_ or _FALS_e if (Context::isBool($token)) { - return new Token($token, Token::TYPE_BOOL); - } elseif (++$this->last < $this->len) { + return new Token($token, TokenType::Bool); + } + + if (++$this->last < $this->len) { $token .= $this->str[$this->last]; // fals_E_ if (Context::isBool($token)) { - return new Token($token, Token::TYPE_BOOL, 1); + return new Token($token, TokenType::Bool, 1); } } @@ -669,10 +687,8 @@ public function parseBool() /** * Parses a number. - * - * @return null|Token */ - public function parseNumber() + public function parseNumber(): Token|null { // A rudimentary state machine is being used to parse numbers due to // the various forms of their notation. @@ -683,7 +699,7 @@ public function parseNumber() // 1 --------------------[ + or - ]-------------------> 1 // 1 -------------------[ 0x or 0X ]------------------> 2 // 1 --------------------[ 0 to 9 ]-------------------> 3 - // 1 -----------------------[ . ]---------------------> 4 + // 1 -----------------------[ . ]---------------------> 10 // 1 -----------------------[ b ]---------------------> 7 // // 2 --------------------[ 0 to F ]-------------------> 2 @@ -702,14 +718,20 @@ public function parseNumber() // 8 --------------------[ 0 or 1 ]-------------------> 8 // 8 -----------------------[ ' ]---------------------> 9 // + // 10 -------------------[ 0 to 9 ]-------------------> 4 + // // State 1 may be reached by negative numbers. // State 2 is reached only by hex numbers. // State 4 is reached only by float numbers. // State 5 is reached only by numbers in approximate form. // State 7 is reached only by numbers in bit representation. + // State 10 is a forced proxy to state 4 ensuring a starting dot (= "0.something") precedes a digit, and not "e" + // or "E" causing wrongly interpreted scientific notation (".e[0 to 9]" is invalid). Such invalid notation could + // break the lexer when table names under a given database context starts with ".e[0-9]". // // Valid final states are: 2, 3, 4 and 6. Any parsing that finished in a // state other than these is invalid. + // Also, negative states are invalid states. $iBak = $this->last; $token = ''; $flags = 0; @@ -718,19 +740,17 @@ public function parseNumber() if ($state === 1) { if ($this->str[$this->last] === '-') { $flags |= Token::FLAG_NUMBER_NEGATIVE; - } elseif ($this->last + 1 < $this->len + } elseif ( + $this->last + 1 < $this->len && $this->str[$this->last] === '0' - && ( - $this->str[$this->last + 1] === 'x' - || $this->str[$this->last + 1] === 'X' - ) + && $this->str[$this->last + 1] === 'x' ) { $token .= $this->str[$this->last++]; $state = 2; } elseif ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') { $state = 3; } elseif ($this->str[$this->last] === '.') { - $state = 4; + $state = 10; } elseif ($this->str[$this->last] === 'b') { $state = 7; } elseif ($this->str[$this->last] !== '+') { @@ -739,7 +759,8 @@ public function parseNumber() } } elseif ($state === 2) { $flags |= Token::FLAG_NUMBER_HEX; - if (! ( + if ( + ! ( ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'F') || ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'f') @@ -752,6 +773,13 @@ public function parseNumber() $state = 4; } elseif ($this->str[$this->last] === 'e' || $this->str[$this->last] === 'E') { $state = 5; + } elseif ( + ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') + || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z') + ) { + // A number can't be directly followed by a letter + $state = -$state; + break; } elseif ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { // Just digits and `.`, `e` and `E` are valid characters. break; @@ -760,16 +788,31 @@ public function parseNumber() $flags |= Token::FLAG_NUMBER_FLOAT; if ($this->str[$this->last] === 'e' || $this->str[$this->last] === 'E') { $state = 5; + } elseif ( + ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') + || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z') + ) { + // A number can't be directly followed by a letter + $state = -$state; + break; } elseif ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { // Just digits, `e` and `E` are valid characters. break; } } elseif ($state === 5) { $flags |= Token::FLAG_NUMBER_APPROXIMATE; - if ($this->str[$this->last] === '+' || $this->str[$this->last] === '-' + if ( + $this->str[$this->last] === '+' || $this->str[$this->last] === '-' || ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') ) { $state = 6; + } elseif ( + ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') + || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z') + ) { + // A number can't be directly followed by a letter + $state = -$state; + break; } else { break; } @@ -780,32 +823,37 @@ public function parseNumber() } } elseif ($state === 7) { $flags |= Token::FLAG_NUMBER_BINARY; - if ($this->str[$this->last] === '\'') { - $state = 8; - } else { + if ($this->str[$this->last] !== '\'') { break; } + + $state = 8; } elseif ($state === 8) { if ($this->str[$this->last] === '\'') { $state = 9; - } elseif ($this->str[$this->last] !== '0' - && $this->str[$this->last] !== '1' - ) { + } elseif ($this->str[$this->last] !== '0' && $this->str[$this->last] !== '1') { break; } } elseif ($state === 9) { break; + } elseif ($state === 10) { + $flags |= Token::FLAG_NUMBER_FLOAT; + if ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { + break; + } + + $state = 4; } + $token .= $this->str[$this->last]; } - if ($state === 2 || $state === 3 - || ($token !== '.' && $state === 4) - || $state === 6 || $state === 9 - ) { + + if ($state === 2 || $state === 3 || ($token !== '.' && $state === 4) || $state === 6 || $state === 9) { --$this->last; - return new Token($token, Token::TYPE_NUMBER, $flags); + return new Token($token, TokenType::Number, $flags); } + $this->last = $iBak; return null; @@ -816,18 +864,22 @@ public function parseNumber() * * @param string $quote additional starting symbol * - * @return null|Token + * @throws LexerException */ - public function parseString($quote = '') + public function parseString(string $quote = ''): Token|null { $token = $this->str[$this->last]; - if (! ($flags = Context::isString($token)) && $token !== $quote) { + $flags = Context::isString($token); + + if ($flags === null && $token !== $quote) { return null; } + $quote = $token; while (++$this->last < $this->len) { - if ($this->last + 1 < $this->len + if ( + $this->last + 1 < $this->len && ( ($this->str[$this->last] === $quote && $this->str[$this->last + 1] === $quote) || ($this->str[$this->last] === '\\' && $quote !== '`') @@ -838,6 +890,7 @@ public function parseString($quote = '') if ($this->str[$this->last] === $quote) { break; } + $token .= $this->str[$this->last]; } } @@ -846,27 +899,29 @@ public function parseString($quote = '') $this->error( sprintf( Translator::gettext('Ending quote %1$s was expected.'), - $quote + $quote, ), '', - $this->last + $this->last, ); } else { $token .= $this->str[$this->last]; } - return new Token($token, Token::TYPE_STRING, $flags); + return new Token($token, TokenType::String, $flags ?? Token::FLAG_NONE); } /** * Parses a symbol. * - * @return null|Token + * @throws LexerException */ - public function parseSymbol() + public function parseSymbol(): Token|null { $token = $this->str[$this->last]; - if (! ($flags = Context::isSymbol($token))) { + $flags = Context::isSymbol($token); + + if ($flags === null) { return null; } @@ -887,13 +942,13 @@ public function parseSymbol() $str = null; if ($this->last < $this->len) { - if (($str = $this->parseString('`')) === null) { - if (($str = $this->parseUnknown()) === null) { - $this->error( - 'Variable name was expected.', - $this->str[$this->last], - $this->last - ); + $str = $this->parseString('`'); + + if ($str === null) { + $str = $this->parseUnknown(); + + if ($str === null && ! ($flags & Token::FLAG_SYMBOL_PARAMETER)) { + $this->error('Variable name was expected.', $this->str[$this->last], $this->last); } } } @@ -902,15 +957,13 @@ public function parseSymbol() $token .= $str->token; } - return new Token($token, Token::TYPE_SYMBOL, $flags); + return new Token($token, TokenType::Symbol, $flags); } /** * Parses unknown parts of the query. - * - * @return null|Token */ - public function parseUnknown() + public function parseUnknown(): Token|null { $token = $this->str[$this->last]; if (Context::isSeparator($token)) { @@ -919,7 +972,15 @@ public function parseUnknown() while (++$this->last < $this->len && ! Context::isSeparator($this->str[$this->last])) { $token .= $this->str[$this->last]; + + // Test if end of token equals the current delimiter. If so, remove it from the token. + if (str_ends_with($token, $this->delimiter)) { + $token = substr($token, 0, -$this->delimiterLen); + $this->last -= $this->delimiterLen - 1; + break; + } } + --$this->last; return new Token($token); @@ -927,10 +988,8 @@ public function parseUnknown() /** * Parses the delimiter of the query. - * - * @return null|Token */ - public function parseDelimiter() + public function parseDelimiter(): Token|null { $idx = 0; @@ -938,11 +997,50 @@ public function parseDelimiter() if ($this->delimiter[$idx] !== $this->str[$this->last + $idx]) { return null; } + ++$idx; } $this->last += $this->delimiterLen - 1; - return new Token($this->delimiter, Token::TYPE_DELIMITER); + return new Token($this->delimiter, TokenType::Delimiter); + } + + private function parse(): Token|null + { + // It is best to put the parsers in order of their complexity + // (ascending) and their occurrence rate (descending). + // + // Conflicts: + // + // 1. `parseDelimiter`, `parseUnknown`, `parseKeyword`, `parseNumber` + // They fight over delimiter. The delimiter may be a keyword, a + // number or almost any character which makes the delimiter one of + // the first tokens that must be parsed. + // + // 1. `parseNumber` and `parseOperator` + // They fight over `+` and `-`. + // + // 2. `parseComment` and `parseOperator` + // They fight over `/` (as in ```/*comment*/``` or ```a / b```) + // + // 3. `parseBool` and `parseKeyword` + // They fight over `TRUE` and `FALSE`. + // + // 4. `parseKeyword` and `parseUnknown` + // They fight over words. `parseUnknown` does not know about + // keywords. + + return $this->parseDelimiter() + ?? $this->parseWhitespace() + ?? $this->parseNumber() + ?? $this->parseComment() + ?? $this->parseOperator() + ?? $this->parseBool() + ?? $this->parseString() + ?? $this->parseSymbol() + ?? $this->parseKeyword() + ?? $this->parseLabel() + ?? $this->parseUnknown(); } } diff --git a/src/Parseable.php b/src/Parseable.php new file mode 100644 index 000000000..b42ebca08 --- /dev/null +++ b/src/Parseable.php @@ -0,0 +1,22 @@ + $options parameters for parsing + * + * @return Component|Component[]|null + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): Component|array|null; +} diff --git a/src/Parser.php b/src/Parser.php index 91524fd92..f1cbccabb 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -1,37 +1,52 @@ |''> */ - public static $STATEMENT_PARSERS = [ + public const STATEMENT_PARSERS = [ // MySQL Utility Statements - 'DESCRIBE' => 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', - 'DESC' => 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', - 'EXPLAIN' => 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', + 'DESCRIBE' => Statements\ExplainStatement::class, + 'DESC' => Statements\ExplainStatement::class, + 'EXPLAIN' => Statements\ExplainStatement::class, 'FLUSH' => '', 'GRANT' => '', 'HELP' => '', @@ -41,38 +56,40 @@ class Parser extends Core // Table Maintenance Statements // https://dev.mysql.com/doc/refman/5.7/en/table-maintenance-sql.html - 'ANALYZE' => 'PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement', - 'BACKUP' => 'PhpMyAdmin\\SqlParser\\Statements\\BackupStatement', - 'CHECK' => 'PhpMyAdmin\\SqlParser\\Statements\\CheckStatement', - 'CHECKSUM' => 'PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement', - 'OPTIMIZE' => 'PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement', - 'REPAIR' => 'PhpMyAdmin\\SqlParser\\Statements\\RepairStatement', - 'RESTORE' => 'PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement', + 'ANALYZE' => Statements\AnalyzeStatement::class, + 'BACKUP' => Statements\BackupStatement::class, + 'CHECK' => Statements\CheckStatement::class, + 'CHECKSUM' => Statements\ChecksumStatement::class, + 'KILL' => Statements\KillStatement::class, + 'OPTIMIZE' => Statements\OptimizeStatement::class, + 'REPAIR' => Statements\RepairStatement::class, + 'RESTORE' => Statements\RestoreStatement::class, // Database Administration Statements // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-server-administration.html - 'SET' => 'PhpMyAdmin\\SqlParser\\Statements\\SetStatement', - 'SHOW' => 'PhpMyAdmin\\SqlParser\\Statements\\ShowStatement', + 'SET' => Statements\SetStatement::class, + 'SHOW' => Statements\ShowStatement::class, // Data Definition Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-definition.html - 'ALTER' => 'PhpMyAdmin\\SqlParser\\Statements\\AlterStatement', - 'CREATE' => 'PhpMyAdmin\\SqlParser\\Statements\\CreateStatement', - 'DROP' => 'PhpMyAdmin\\SqlParser\\Statements\\DropStatement', - 'RENAME' => 'PhpMyAdmin\\SqlParser\\Statements\\RenameStatement', - 'TRUNCATE' => 'PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement', + 'ALTER' => Statements\AlterStatement::class, + 'CREATE' => Statements\CreateStatement::class, + 'DROP' => Statements\DropStatement::class, + 'RENAME' => Statements\RenameStatement::class, + 'TRUNCATE' => Statements\TruncateStatement::class, // Data Manipulation Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-manipulation.html - 'CALL' => 'PhpMyAdmin\\SqlParser\\Statements\\CallStatement', - 'DELETE' => 'PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement', + 'CALL' => Statements\CallStatement::class, + 'DELETE' => Statements\DeleteStatement::class, 'DO' => '', 'HANDLER' => '', - 'INSERT' => 'PhpMyAdmin\\SqlParser\\Statements\\InsertStatement', - 'LOAD DATA' => 'PhpMyAdmin\\SqlParser\\Statements\\LoadStatement', - 'REPLACE' => 'PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement', - 'SELECT' => 'PhpMyAdmin\\SqlParser\\Statements\\SelectStatement', - 'UPDATE' => 'PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement', + 'INSERT' => Statements\InsertStatement::class, + 'LOAD DATA' => Statements\LoadStatement::class, + 'REPLACE' => Statements\ReplaceStatement::class, + 'SELECT' => Statements\SelectStatement::class, + 'UPDATE' => Statements\UpdateStatement::class, + 'WITH' => Statements\WithStatement::class, // Prepared Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html @@ -82,287 +99,282 @@ class Parser extends Core // Transactional and Locking Statements // https://dev.mysql.com/doc/refman/5.7/en/commit.html - 'BEGIN' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', - 'COMMIT' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', - 'ROLLBACK' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', - 'START TRANSACTION' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', + 'BEGIN' => Statements\TransactionStatement::class, + 'COMMIT' => Statements\TransactionStatement::class, + 'ROLLBACK' => Statements\TransactionStatement::class, + 'START TRANSACTION' => Statements\TransactionStatement::class, - 'PURGE' => 'PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement', + 'PURGE' => Statements\PurgeStatement::class, // Lock statements // https://dev.mysql.com/doc/refman/5.7/en/lock-tables.html - 'LOCK' => 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement', - 'UNLOCK' => 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement', + 'LOCK' => Statements\LockStatement::class, + 'UNLOCK' => Statements\LockStatement::class, ]; /** * Array of classes that are used in parsing SQL components. - * - * @var array */ - public static $KEYWORD_PARSERS = [ - // This is not a proper keyword and was added here to help the - // formatter. - 'PARTITION BY' => [], - 'SUBPARTITION BY' => [], - + public const KEYWORD_PARSERS = [ // This is not a proper keyword and was added here to help the // builder. '_OPTIONS' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray', + 'class' => Parsers\OptionsArrays::class, 'field' => 'options', ], '_END_OPTIONS' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray', - 'field' => 'end_options', + 'class' => Parsers\OptionsArrays::class, + 'field' => 'endOptions', + ], + '_GROUP_OPTIONS' => [ + 'class' => Parsers\OptionsArrays::class, + 'field' => 'groupOptions', ], 'INTERSECT' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'class' => Parsers\UnionKeywords::class, 'field' => 'union', ], 'EXCEPT' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'class' => Parsers\UnionKeywords::class, 'field' => 'union', ], 'UNION' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'class' => Parsers\UnionKeywords::class, 'field' => 'union', ], 'UNION ALL' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'class' => Parsers\UnionKeywords::class, 'field' => 'union', ], 'UNION DISTINCT' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'class' => Parsers\UnionKeywords::class, 'field' => 'union', ], // Actual clause parsers. 'ALTER' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', + 'class' => Parsers\Expressions::class, 'field' => 'table', 'options' => ['parseField' => 'table'], ], 'ANALYZE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'BACKUP' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'CALL' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall', + 'class' => Parsers\FunctionCalls::class, 'field' => 'call', ], 'CHECK' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'CHECKSUM' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'CROSS JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'DROP' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'fields', 'options' => ['parseField' => 'table'], ], 'FORCE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', - 'field' => 'index_hints', + 'class' => Parsers\IndexHints::class, + 'field' => 'indexHints', ], 'FROM' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'from', 'options' => ['field' => 'table'], ], 'GROUP BY' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\GroupKeyword', + 'class' => Parsers\GroupKeywords::class, 'field' => 'group', ], 'HAVING' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Condition', + 'class' => Parsers\Conditions::class, 'field' => 'having', ], 'IGNORE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', - 'field' => 'index_hints', + 'class' => Parsers\IndexHints::class, + 'field' => 'indexHints', ], 'INTO' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IntoKeyword', + 'class' => Parsers\IntoKeywords::class, 'field' => 'into', ], 'JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'LEFT JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'LEFT OUTER JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'ON' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', + 'class' => Parsers\Expressions::class, 'field' => 'table', 'options' => ['parseField' => 'table'], ], 'RIGHT JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'RIGHT OUTER JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'INNER JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'FULL JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'FULL OUTER JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'NATURAL JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'NATURAL LEFT JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'NATURAL RIGHT JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'NATURAL LEFT OUTER JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'NATURAL RIGHT OUTER JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'STRAIGHT_JOIN' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'class' => Parsers\JoinKeywords::class, 'field' => 'join', ], 'LIMIT' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Limit', + 'class' => Parsers\Limits::class, 'field' => 'limit', ], 'OPTIMIZE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'ORDER BY' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OrderKeyword', + 'class' => Parsers\OrderKeywords::class, 'field' => 'order', ], 'PARTITION' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ArrayObj', + 'class' => Parsers\ArrayObjs::class, 'field' => 'partition', ], 'PROCEDURE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall', + 'class' => Parsers\FunctionCalls::class, 'field' => 'procedure', ], 'RENAME' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\RenameOperation', + 'class' => Parsers\RenameOperations::class, 'field' => 'renames', ], 'REPAIR' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'RESTORE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'SET' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\SetOperation', + 'class' => Parsers\SetOperations::class, 'field' => 'set', ], 'SELECT' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'expr', ], 'TRUNCATE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', + 'class' => Parsers\Expressions::class, 'field' => 'table', 'options' => ['parseField' => 'table'], ], 'UPDATE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'class' => Parsers\ExpressionArray::class, 'field' => 'tables', 'options' => ['parseField' => 'table'], ], 'USE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', - 'field' => 'index_hints', + 'class' => Parsers\IndexHints::class, + 'field' => 'indexHints', ], 'VALUE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Array2d', + 'class' => Parsers\Array2d::class, 'field' => 'values', ], 'VALUES' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Array2d', + 'class' => Parsers\Array2d::class, 'field' => 'values', ], 'WHERE' => [ - 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Condition', + 'class' => Parsers\Conditions::class, 'field' => 'where', ], ]; /** * The list of tokens that are parsed. - * - * @var TokensList */ - public $list; + public TokensList|null $list = null; /** * List of statements parsed. * * @var Statement[] */ - public $statements = []; + public array $statements = []; /** * The number of opened brackets. - * - * @var int */ - public $brackets = 0; + public int $brackets = 0; /** - * Constructor. - * - * @param string|UtfString|TokensList $list the list of tokens to be parsed - * @param bool $strict whether strict mode should be enabled or not + * @param string|UtfString|TokensList|null $list the list of tokens to be parsed + * @param bool $strict whether strict mode should be enabled or not */ - public function __construct($list = null, $strict = false) + public function __construct(string|UtfString|TokensList|null $list = null, bool $strict = false) { + if (Context::$keywords === []) { + Context::load(); + } + if (is_string($list) || ($list instanceof UtfString)) { $lexer = new Lexer($list, $strict); $this->list = $lexer->list; @@ -372,66 +384,56 @@ public function __construct($list = null, $strict = false) $this->strict = $strict; - if ($list !== null) { - $this->parse(); + if ($list === null) { + return; } + + $this->parse(); } /** * Builds the parse trees. + * + * @throws ParserException */ - public function parse() + public function parse(): void { /** * Last transaction. - * - * @var TransactionStatement */ $lastTransaction = null; /** * Last parsed statement. - * - * @var Statement */ $lastStatement = null; /** * Union's type or false for no union. - * - * @var bool|string */ $unionType = false; /** * The index of the last token from the last statement. - * - * @var int */ $prevLastIdx = -1; /** * The list of tokens. - * - * @var TokensList */ $list = &$this->list; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // `DELIMITER` is not an actual statement and it requires // special handling. - if (($token->type === Token::TYPE_NONE) - && (strtoupper($token->token) === 'DELIMITER') - ) { + if (($token->type === TokenType::None) && (strtoupper($token->token) === 'DELIMITER')) { // Skipping to the end of this statement. - $list->getNextOfType(Token::TYPE_DELIMITER); + $list->getNextOfType(TokenType::Delimiter); $prevLastIdx = $list->idx; continue; } @@ -444,21 +446,21 @@ public function parse() // Statements can start with keywords only. // Comments, whitespaces, etc. are ignored. - if ($token->type !== Token::TYPE_KEYWORD) { - if (($token->type !== Token::TYPE_COMMENT) - && ($token->type !== Token::TYPE_WHITESPACE) - && ($token->type !== Token::TYPE_OPERATOR) // `(` and `)` - && ($token->type !== Token::TYPE_DELIMITER) + if ($token->type !== TokenType::Keyword) { + if ( + ($token->type !== TokenType::Comment) + && ($token->type !== TokenType::Whitespace) + && ($token->type !== TokenType::Operator) // `(` and `)` + && ($token->type !== TokenType::Delimiter) ) { - $this->error( - 'Unexpected beginning of statement.', - $token - ); + $this->error('Unexpected beginning of statement.', $token); } + continue; } - if (($token->keyword === 'UNION') || + if ( + ($token->keyword === 'UNION') || ($token->keyword === 'UNION ALL') || ($token->keyword === 'UNION DISTINCT') || ($token->keyword === 'EXCEPT') || @@ -468,34 +470,47 @@ public function parse() continue; } - // Checking if it is a known statement that can be parsed. - if (empty(static::$STATEMENT_PARSERS[$token->keyword])) { - if (! isset(static::$STATEMENT_PARSERS[$token->keyword])) { + $lastIdx = $list->idx; + $statementName = null; + + if ($token->keyword === 'ANALYZE') { + ++$list->idx; // Skip ANALYZE + + $first = $list->getNextOfType(TokenType::Keyword); + $second = $list->getNextOfType(TokenType::Keyword); + + // ANALYZE keyword can be an indication of two cases: + // 1 - ANALYZE TABLE statements, in both MariaDB and MySQL + // 2 - Explain statement, in case of MariaDB https://mariadb.com/kb/en/explain-analyze/ + // We need to point case 2 to use the EXPLAIN Parser. + $statementName = 'EXPLAIN'; + if (($first && $first->keyword === 'TABLE') || ($second && $second->keyword === 'TABLE')) { + $statementName = 'ANALYZE'; + } + + $list->idx = $lastIdx; + } elseif (empty(self::STATEMENT_PARSERS[$token->keyword])) { + // Checking if it is a known statement that can be parsed. + if (! isset(self::STATEMENT_PARSERS[$token->keyword])) { // A statement is considered recognized if the parser // is aware that it is a statement, but it does not have // a parser for it yet. - $this->error( - 'Unrecognized statement type.', - $token - ); + $this->error('Unrecognized statement type.', $token); } + // Skipping to the end of this statement. - $list->getNextOfType(Token::TYPE_DELIMITER); + $list->getNextOfType(TokenType::Delimiter); $prevLastIdx = $list->idx; continue; } /** * The name of the class that is used for parsing. - * - * @var string */ - $class = static::$STATEMENT_PARSERS[$token->keyword]; + $class = self::STATEMENT_PARSERS[$statementName ?? $token->keyword]; /** * Processed statement. - * - * @var Statement */ $statement = new $class($this, $this->list); @@ -511,7 +526,8 @@ public function parse() $prevLastIdx = $list->idx; // Handles unions. - if (! empty($unionType) + if ( + ! empty($unionType) && ($lastStatement instanceof SelectStatement) && ($statement instanceof SelectStatement) ) { @@ -562,13 +578,11 @@ public function parse() // Even though an error occurred, the query is being // saved. $this->statements[] = $statement; - $this->error( - 'No transaction was previously started.', - $token - ); + $this->error('No transaction was previously started.', $token); } else { $lastTransaction->end = $statement; } + $lastTransaction = null; } @@ -586,6 +600,7 @@ public function parse() } else { $this->statements[] = $statement; } + $lastStatement = $statement; } } @@ -597,15 +612,20 @@ public function parse() * @param Token $token the token that produced the error * @param int $code the code of the error * - * @throws ParserException throws the exception, if strict mode is enabled + * @throws ParserException throws the exception, if strict mode is enabled. */ - public function error($msg, Token $token = null, $code = 0) + public function error(string $msg, Token|null $token = null, int $code = 0): void { $error = new ParserException( Translator::gettext($msg), $token, - $code + $code, ); - parent::error($error); + + if ($this->strict) { + throw $error; + } + + $this->errors[] = $error; } } diff --git a/src/Parsers/AlterOperations.php b/src/Parsers/AlterOperations.php new file mode 100644 index 000000000..888aeb2fb --- /dev/null +++ b/src/Parsers/AlterOperations.php @@ -0,0 +1,501 @@ + [ + 1, + 'var', + ], + 'CHARSET' => [ + 1, + 'var', + ], + 'DEFAULT CHARACTER SET' => [ + 1, + 'var', + ], + 'DEFAULT CHARSET' => [ + 1, + 'var', + ], + 'UPGRADE' => [ + 1, + 'var', + ], + 'COLLATE' => [ + 2, + 'var', + ], + 'DEFAULT COLLATE' => [ + 2, + 'var', + ], + ]; + + /** + * All table options. + */ + public const TABLE_OPTIONS = [ + 'ENGINE' => [ + 1, + 'var=', + ], + 'ALGORITHM' => [ + 1, + 'var=', + ], + 'AUTO_INCREMENT' => [ + 1, + 'var=', + ], + 'AVG_ROW_LENGTH' => [ + 1, + 'var', + ], + 'COALESCE PARTITION' => [ + 1, + 'var', + ], + 'LOCK' => [ + 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, + 'CONVERT' => 1, + 'DEFAULT CHARSET' => 1, + 'DISABLE' => 1, + 'DISCARD' => 1, + 'DROP' => 1, + 'ENABLE' => 1, + 'IMPORT' => 1, + 'MODIFY' => 1, + 'OPTIMIZE' => 1, + 'ORDER' => 1, + 'REBUILD' => 1, + 'REMOVE' => 1, + 'RENAME' => 1, + 'REORGANIZE' => 1, + 'REPAIR' => 1, + 'UPGRADE' => 1, + + 'COLUMN' => 2, + 'CONSTRAINT' => 2, + 'DEFAULT' => 2, + 'BY' => 2, + 'FOREIGN' => 2, + 'FULLTEXT' => 2, + 'KEY' => [2, 'var'], + 'KEYS' => 2, + 'PARTITION' => 2, + 'PARTITION BY' => 2, + 'PARTITIONING' => 2, + 'PRIMARY KEY' => 2, + 'SPATIAL' => 2, + 'TABLESPACE' => 2, + 'INDEX' => [ + 2, + 'var', + ], + 'UNIQUE' => 2, + 'UNIQUE KEY' => 2, + + 'CHARACTER SET' => 3, + 'TO' => [ + 3, + 'var', + ], + ]; + + /** + * All user options. + */ + public const USER_OPTIONS = [ + 'ATTRIBUTE' => [ + 1, + 'var', + ], + 'COMMENT' => [ + 1, + 'var', + ], + 'REQUIRE' => [ + 1, + 'var', + ], + + 'IDENTIFIED VIA' => [ + 2, + 'var', + ], + 'IDENTIFIED WITH' => [ + 2, + 'var', + ], + 'PASSWORD' => [ + 2, + 'var', + ], + 'WITH' => [ + 2, + 'var', + ], + + 'BY' => [ + 4, + 'expr', + ], + + 'ACCOUNT' => 1, + 'DEFAULT' => 1, + + 'LOCK' => 2, + 'UNLOCK' => 2, + + 'IDENTIFIED' => 3, + ]; + + /** + * All view options. + */ + public const VIEW_OPTIONS = ['AS' => 1]; + + /** + * All event options. + */ + public const EVENT_OPTIONS = [ + 'ON SCHEDULE' => 1, + 'EVERY' => [ + 2, + 'expr', + ], + 'AT' => [ + 2, + 'expr', + ], + 'STARTS' => [ + 3, + 'expr', + ], + 'ENDS' => [ + 4, + 'expr', + ], + 'ON COMPLETION PRESERVE' => 5, + 'ON COMPLETION NOT PRESERVE' => 5, + 'RENAME' => 6, + 'TO' => [7, 'expr', ['parseField' => 'table', 'breakOnAlias' => true]], + 'ENABLE' => 8, + 'DISABLE' => 8, + 'DISABLE ON SLAVE' => 8, + 'COMMENT' => [ + 9, + 'var', + ], + 'DO' => 10, + ]; + + /** + * All routine (procedure or function) options. + */ + public const ROUTINE_OPTIONS = [ + 'COMMENT' => [1, 'var'], + 'LANGUAGE SQL' => 2, + 'CONTAINS SQL' => 3, + 'NO SQL' => 3, + 'READS SQL DATA' => 3, + 'MODIFIES SQL DATA' => 3, + 'SQL SECURITY' => 4, + 'DEFINER' => 5, + 'INVOKER' => 5, + ]; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): AlterOperation + { + $ret = new AlterOperation(); + + /** + * Counts brackets. + */ + $brackets = 0; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ options ]---------------------> 1 + * + * 1 ----------------------[ field ]----------------------> 2 + * + * 1 -------------[ PARTITION / PARTITION BY ]------------> 3 + * + * 2 -------------------------[ , ]-----------------------> 0 + */ + $state = 0; + + /** + * partition state. + */ + $partitionState = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping comments. + if ($token->type === TokenType::Comment) { + continue; + } + + // Skipping whitespaces. + if ($token->type === TokenType::Whitespace) { + if ($state === 2) { + // When parsing the unknown part, the whitespaces are + // included to not break anything. + $ret->unknown[] = $token; + continue; + } + } + + if ($state === 0) { + $ret->options = OptionsArrays::parse($parser, $list, $options); + + // Not only when aliasing but also when parsing the body of an event, we just list the tokens of the + // body in the unknown tokens list, as they define their own statements. + if ($ret->options->has('AS') || $ret->options->has('DO')) { + for (; $list->idx < $list->count; ++$list->idx) { + if ($list->tokens[$list->idx]->type === TokenType::Delimiter) { + break; + } + + $ret->unknown[] = $list->tokens[$list->idx]; + } + + break; + } + + $state = 1; + if ($ret->options->has('PARTITION') || $token->value === 'PARTITION BY') { + $state = 3; + $list->getPrevious(); // in order to check whether it's partition or partition by. + } + } elseif ($state === 1) { + $ret->field = Expressions::parse( + $parser, + $list, + [ + 'breakOnAlias' => true, + 'parseField' => 'column', + ], + ); + if ($ret->field === null) { + // No field was read. We go back one token so the next + // iteration will parse the same token, but in state 2. + --$list->idx; + } + + // If the operation is a RENAME COLUMN, now we have detected the field to rename, we need to parse + // again the options to get the new name of the column. + if ($ret->options->has('RENAME') && $ret->options->has('COLUMN')) { + $nextOptions = OptionsArrays::parse($parser, $list, $options); + $ret->options->merge($nextOptions); + } + + $state = 2; + } elseif ($state === 2) { + if (is_string($token->value) || is_int($token->value)) { + $arrayKey = $token->value; + } else { + $arrayKey = $token->token; + } + + if ($token->type === TokenType::Operator) { + if ($token->value === '(') { + ++$brackets; + } elseif ($token->value === ')') { + --$brackets; + } elseif (($token->value === ',') && ($brackets === 0)) { + break; + } + } elseif (! self::checkIfTokenQuotedSymbol($token) && $token->type !== TokenType::String) { + if (isset(Parser::STATEMENT_PARSERS[$arrayKey]) && Parser::STATEMENT_PARSERS[$arrayKey] !== '') { + $list->idx++; // Ignore the current token + $nextToken = $list->getNext(); + + if ($token->value === 'SET' && $nextToken !== null && $nextToken->value === '(') { + // To avoid adding the tokens between the SET() parentheses to the unknown tokens + $list->getNextOfTypeAndValue(TokenType::Operator, ')'); + } elseif ($token->value === 'SET' && $nextToken !== null && $nextToken->value === 'DEFAULT') { + // to avoid adding the `DEFAULT` token to the unknown tokens. + ++$list->idx; + } else { + // We have reached the end of ALTER operation and suddenly found + // a start to new statement, but have not found a delimiter between them + $parser->error( + 'A new statement was found, but no delimiter between it and the previous one.', + $token, + ); + break; + } + } elseif ( + (array_key_exists($arrayKey, self::DATABASE_OPTIONS) + || array_key_exists($arrayKey, self::TABLE_OPTIONS)) + && ! self::checkIfColumnDefinitionKeyword($arrayKey) + ) { + // This alter operation has finished, which means a comma + // was missing before start of new alter operation + $parser->error('Missing comma before start of a new alter operation.', $token); + break; + } + } + + $ret->unknown[] = $token; + } elseif ($state === 3) { + if ($partitionState === 0) { + $list->idx++; // Ignore the current token + $nextToken = $list->getNext(); + if ( + ($token->type === TokenType::Keyword) + && (($token->keyword === 'PARTITION BY') + || ($token->keyword === 'PARTITION' && $nextToken && $nextToken->value !== '(')) + ) { + $partitionState = 1; + } elseif (($token->type === TokenType::Keyword) && ($token->keyword === 'PARTITION')) { + $partitionState = 2; + } + + --$list->idx; // to decrease the idx by one, because the last getNext returned and increased it. + + // reverting the effect of the getNext + $list->getPrevious(); + $list->getPrevious(); + + ++$list->idx; // to index the idx by one, because the last getPrevious returned and decreased it. + } elseif ($partitionState === 1) { + // Fetch the next token in a way the current index is reset to manage whitespaces in "field". + $currIdx = $list->idx; + ++$list->idx; + $nextToken = $list->getNext(); + $list->idx = $currIdx; + // Building the expression used for partitioning. + if (empty($ret->field)) { + $ret->field = ''; + } + + if ( + $token->type === TokenType::Operator + && $token->value === '(' + && $nextToken + && $nextToken->keyword === 'PARTITION' + ) { + $partitionState = 2; + --$list->idx; // Current idx is on "(". We need a step back for ArrayObj::parse incoming. + } else { + $ret->field .= $token->type === TokenType::Whitespace ? ' ' : $token->token; + } + } elseif ($partitionState === 2) { + $ret->partitions = ArrayObjs::parse( + $parser, + $list, + ['type' => PartitionDefinitions::class], + ); + } + } + } + + if ($ret->options->isEmpty()) { + $parser->error('Unrecognized alter operation.', $list->tokens[$list->idx]); + } + + --$list->idx; + + return $ret; + } + + /** + * Check if token's value is one of the common keywords + * between column and table alteration + * + * @param string $tokenValue Value of current token + */ + private static function checkIfColumnDefinitionKeyword(string $tokenValue): bool + { + $commonOptions = [ + 'AUTO_INCREMENT', + 'COMMENT', + 'DEFAULT', + 'CHARACTER SET', + 'COLLATE', + 'PRIMARY', + 'UNIQUE', + 'PRIMARY KEY', + 'UNIQUE KEY', + ]; + + // Since these options can be used for + // both table as well as a specific column in the table + return in_array($tokenValue, $commonOptions); + } + + /** + * Check if token is symbol and quoted with backtick + * + * @param Token $token token to check + */ + private static function checkIfTokenQuotedSymbol(Token $token): bool + { + return $token->type === TokenType::Symbol && $token->flags === Token::FLAG_SYMBOL_BACKTICK; + } +} diff --git a/src/Parsers/Array2d.php b/src/Parsers/Array2d.php new file mode 100644 index 000000000..6f79c29b2 --- /dev/null +++ b/src/Parsers/Array2d.php @@ -0,0 +1,112 @@ + $options parameters for parsing + * + * @return ArrayObj[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + /** + * The number of values in each set. + */ + $count = -1; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ----------------------[ array ]----------------------> 1 + * + * 1 ------------------------[ , ]------------------------> 0 + * 1 -----------------------[ else ]----------------------> (END) + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + // No keyword is expected. + if (($token->type === TokenType::Keyword) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + break; + } + + if ($state === 0) { + if ($token->value !== '(') { + break; + } + + /** @var ArrayObj $arr */ + $arr = ArrayObjs::parse($parser, $list, $options); + $arrCount = count($arr->values); + if ($count === -1) { + $count = $arrCount; + } elseif ($arrCount !== $count) { + $parser->error( + sprintf( + Translator::gettext('%1$d values were expected, but found %2$d.'), + $count, + $arrCount, + ), + $token, + ); + } + + $ret[] = $arr; + $state = 1; + } elseif ($state === 1) { + if ($token->value !== ',') { + break; + } + + $state = 0; + } + } + + if ($state === 0) { + $parser->error('An opening bracket followed by a set of values was expected.', $list->tokens[$list->idx]); + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Parsers/ArrayObjs.php b/src/Parsers/ArrayObjs.php new file mode 100644 index 000000000..2c21a536a --- /dev/null +++ b/src/Parsers/ArrayObjs.php @@ -0,0 +1,139 @@ + $options parameters for parsing + * + * @return ArrayObj|Component[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): ArrayObj|array + { + $ret = empty($options['type']) ? new ArrayObj() : []; + + /** + * The last raw expression. + */ + $lastRaw = ''; + + /** + * The last value. + */ + $lastValue = ''; + + /** + * Counts brackets. + */ + $brackets = 0; + + /** + * Last separator (bracket or comma). + */ + $isCommaLast = false; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + if ($brackets > 0) { + $parser->error('A closing bracket was expected.', $token); + } + + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + $lastRaw .= $token->token; + $lastValue = trim($lastValue) . ' '; + continue; + } + + if (($brackets === 0) && (($token->type !== TokenType::Operator) || ($token->value !== '('))) { + $parser->error('An opening bracket was expected.', $token); + break; + } + + if ($token->type === TokenType::Operator) { + if ($token->value === '(') { + if (++$brackets === 1) { // 1 is the base level. + continue; + } + } elseif ($token->value === ')') { + if (--$brackets === 0) { // Array ended. + break; + } + } elseif ($token->value === ',') { + if ($brackets === 1) { + $isCommaLast = true; + if (empty($options['type'])) { + $ret->raw[] = trim($lastRaw); + $ret->values[] = trim($lastValue); + $lastRaw = $lastValue = ''; + } + + continue; + } + } + } + + if (empty($options['type'])) { + $lastRaw .= $token->token; + $lastValue .= $token->value; + } else { + $ret[] = $options['type']::parse( + $parser, + $list, + empty($options['typeOptions']) ? [] : $options['typeOptions'], + ); + } + } + + // Handling last element. + // + // This is treated differently to treat the following cases: + // + // => [] + // [,] => ['', ''] + // [] => [] + // [a,] => ['a', ''] + // [a] => ['a'] + $lastRaw = trim($lastRaw); + if (empty($options['type']) && ((strlen($lastRaw) > 0) || ($isCommaLast))) { + $ret->raw[] = $lastRaw; + $ret->values[] = trim($lastValue); + } + + return $ret; + } + + /** @param ArrayObj[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(', ', $component); + } +} diff --git a/src/Parsers/CaseExpressions.php b/src/Parsers/CaseExpressions.php new file mode 100644 index 000000000..753bb4d95 --- /dev/null +++ b/src/Parsers/CaseExpressions.php @@ -0,0 +1,198 @@ + $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): CaseExpression + { + $ret = new CaseExpression(); + + /** + * State of parser. + */ + $state = 0; + + /** + * Syntax type (type 0 or type 1). + */ + $type = 0; + + ++$list->idx; // Skip 'CASE' + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + if ($token->type === TokenType::Keyword) { + switch ($token->keyword) { + case 'WHEN': + ++$list->idx; // Skip 'WHEN' + $newCondition = Conditions::parse($parser, $list); + $type = 1; + $state = 1; + $ret->conditions[] = $newCondition; + break; + case 'ELSE': + ++$list->idx; // Skip 'ELSE' + $ret->elseResult = Expressions::parse($parser, $list); + $state = 0; // last clause of CASE expression + break; + case 'END': + $state = 3; // end of CASE expression + ++$list->idx; + break 2; + default: + $parser->error('Unexpected keyword.', $token); + break 2; + } + } else { + $ret->value = Expressions::parse($parser, $list); + $type = 0; + $state = 1; + } + } elseif ($state === 1) { + if ($type === 0) { + if ($token->type === TokenType::Keyword) { + switch ($token->keyword) { + case 'WHEN': + ++$list->idx; // Skip 'WHEN' + $newValue = Expressions::parse($parser, $list); + $state = 2; + $ret->compareValues[] = $newValue; + break; + case 'ELSE': + ++$list->idx; // Skip 'ELSE' + $ret->elseResult = Expressions::parse($parser, $list); + $state = 0; // last clause of CASE expression + break; + case 'END': + $state = 3; // end of CASE expression + ++$list->idx; + break 2; + default: + $parser->error('Unexpected keyword.', $token); + break 2; + } + } + } elseif ($token->type === TokenType::Keyword && $token->keyword === 'THEN') { + ++$list->idx; // Skip 'THEN' + $newResult = Expressions::parse($parser, $list); + $state = 0; + $ret->results[] = $newResult; + } elseif ($token->type === TokenType::Keyword) { + $parser->error('Unexpected keyword.', $token); + break; + } + } elseif ($state === 2) { + if ($type === 0) { + if ($token->type === TokenType::Keyword && $token->keyword === 'THEN') { + ++$list->idx; // Skip 'THEN' + $newResult = Expressions::parse($parser, $list); + $ret->results[] = $newResult; + $state = 1; + } elseif ($token->type === TokenType::Keyword) { + $parser->error('Unexpected keyword.', $token); + break; + } + } + } + } + + if ($state !== 3) { + $parser->error('Unexpected end of CASE expression', $list->tokens[$list->idx - 1]); + } else { + // Parse for alias of CASE expression + $asFound = false; + for (; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + // Handle optional AS keyword before alias + if ($token->type === TokenType::Keyword && $token->keyword === 'AS') { + if ($asFound || ! empty($ret->alias)) { + $parser->error('Potential duplicate alias of CASE expression.', $token); + break; + } + + $asFound = true; + continue; + } + + if ( + $asFound + && $token->type === TokenType::Keyword + && ($token->flags & Token::FLAG_KEYWORD_RESERVED || $token->flags & Token::FLAG_KEYWORD_FUNCTION) + ) { + $parser->error('An alias expected after AS but got ' . $token->value, $token); + $asFound = false; + break; + } + + if ( + $asFound + || $token->type === TokenType::String + || ($token->type === TokenType::Symbol && ! $token->flags & Token::FLAG_SYMBOL_VARIABLE) + || $token->type === TokenType::None + ) { + // An alias is expected (the keyword `AS` was previously found). + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $token->value; + $asFound = false; + + continue; + } + + break; + } + + if ($asFound) { + $parser->error('An alias was expected after AS.', $list->tokens[$list->idx - 1]); + } + + $ret->expr = $ret->build(); + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Parsers/Conditions.php b/src/Parsers/Conditions.php new file mode 100644 index 000000000..62fe37e58 --- /dev/null +++ b/src/Parsers/Conditions.php @@ -0,0 +1,233 @@ +=', '>', '<=', '<', '<>', '!=']; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return Condition[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new Condition(); + + /** + * Counts brackets. + */ + $brackets = 0; + + /** + * Whether there was a `BETWEEN` keyword before or not. + * + * It is required to keep track of them because their structure contains + * the keyword `AND`, which is also an operator that delimits + * expressions. + */ + $betweenBefore = false; + + $hasSubQuery = false; + $subQueryBracket = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if ($token->type === TokenType::Comment) { + continue; + } + + // Replacing all whitespaces (new lines, tabs, etc.) with a single + // space character. + if ($token->type === TokenType::Whitespace) { + $expr->expr .= ' '; + if ($expr->operator === '') { + $expr->leftOperand .= ' '; + } else { + $expr->rightOperand .= ' '; + } + + continue; + } + + if ( + ! $hasSubQuery + && $token->keyword !== null && $token->type === TokenType::Keyword + && $brackets > 0 + && (Parser::STATEMENT_PARSERS[$token->keyword] ?? '') !== '' + ) { + $hasSubQuery = true; + $subQueryBracket = $brackets; + } + + // Conditions are delimited by logical operators. + if ( + ($token->type === TokenType::Keyword || $token->type === TokenType::Operator) + && in_array($token->value, self::DELIMITERS, true) + ) { + if ($betweenBefore && ($token->value === 'AND')) { + // The syntax of keyword `BETWEEN` is hard-coded. + $betweenBefore = false; + } else { + // The expression ended. + $expr->expr = trim($expr->expr); + if ($expr->expr !== '') { + $expr->leftOperand = trim($expr->leftOperand); + $expr->rightOperand = trim($expr->rightOperand); + $ret[] = $expr; + } + + // Adding the operator. + $expr = new Condition($token->value); + $expr->isOperator = true; + $ret[] = $expr; + + // Preparing to parse another condition. + $expr = new Condition(); + continue; + } + } + + if ( + ($token->type === TokenType::Keyword) + && ($token->flags & Token::FLAG_KEYWORD_RESERVED) + && ! ($token->flags & Token::FLAG_KEYWORD_FUNCTION) + ) { + if ($token->value === 'BETWEEN') { + $betweenBefore = true; + } + + if ($brackets === 0 && ! in_array($token->value, self::ALLOWED_KEYWORDS, true)) { + break; + } + } + + if ($token->type === TokenType::Operator) { + if ($token->value === '(') { + ++$brackets; + } elseif ($token->value === ')') { + if ($brackets === 0) { + break; + } + + if ($subQueryBracket === $brackets) { + $hasSubQuery = false; + } + + --$brackets; + } elseif (! $hasSubQuery && in_array($token->value, self::COMPARISON_OPERATORS, true)) { + $expr->operator = $token->value; + } + } + + $expr->expr .= $token->token; + if ($expr->operator === '') { + $expr->leftOperand .= $token->token; + } elseif ($expr->rightOperand !== '' || $expr->operator !== $token->value) { + $expr->rightOperand .= $token->token; + } + + if ( + ($token->type !== TokenType::None) + && (($token->type !== TokenType::Keyword) + || ($token->flags & Token::FLAG_KEYWORD_RESERVED)) + && ($token->type !== TokenType::String) + && ($token->type !== TokenType::Symbol || ($token->flags & Token::FLAG_SYMBOL_PARAMETER)) + ) { + continue; + } + + if (in_array($token->value, $expr->identifiers)) { + continue; + } + + $expr->identifiers[] = $token->value; + } + + // Last iteration was not processed. + $expr->expr = trim($expr->expr); + if ($expr->expr !== '') { + $expr->leftOperand = trim($expr->leftOperand); + $expr->rightOperand = trim($expr->rightOperand); + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** @param Condition[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(' ', $component); + } +} diff --git a/src/Parsers/CreateDefinitions.php b/src/Parsers/CreateDefinitions.php new file mode 100644 index 000000000..21cdff855 --- /dev/null +++ b/src/Parsers/CreateDefinitions.php @@ -0,0 +1,249 @@ + true, + + 'NOT NULL' => 1, + 'NULL' => 1, + 'DEFAULT' => [ + 2, + 'expr', + ['breakOnAlias' => true], + ], + /* Following are not according to grammar, but MySQL happily accepts + * these at any location */ + 'CHARSET' => [ + 2, + 'var', + ], + 'COLLATE' => [ + 3, + 'var', + ], + 'AUTO_INCREMENT' => 3, + 'KEY' => 4, + 'PRIMARY' => 4, + 'PRIMARY KEY' => 4, + 'UNIQUE' => 4, + 'UNIQUE KEY' => 4, + 'COMMENT' => [ + 5, + 'var', + ], + 'COLUMN_FORMAT' => [ + 6, + 'var', + ], + 'ON UPDATE' => [ + 7, + 'expr', + ], + + // Generated columns options. + 'GENERATED ALWAYS' => 8, + 'AS' => [ + 9, + 'expr', + ['parenthesesDelimited' => true], + ], + 'VIRTUAL' => 10, + 'PERSISTENT' => 11, + 'STORED' => 11, + 'CHECK' => [ + 12, + 'expr', + ['parenthesesDelimited' => true], + ], + 'INVISIBLE' => 13, + 'ENFORCED' => 14, + 'NOT' => 15, + 'COMPRESSED' => 16, + 'SRID' => [17, 'var'], + // Common entries. + // + // NOTE: Some of the common options are not in the same order which + // causes troubles when checking if the options are in the right order. + // I should find a way to define multiple sets of options and make the + // parser select the right set. + // + // 'UNIQUE' => 4, + // 'UNIQUE KEY' => 4, + // 'COMMENT' => [5, 'var'], + // 'NOT NULL' => 1, + // 'NULL' => 1, + // 'PRIMARY' => 4, + // 'PRIMARY KEY' => 4, + ]; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return CreateDefinition[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new CreateDefinition(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ ( ]------------------------> 1 + * + * 1 --------------------[ CONSTRAINT ]------------------> 1 + * 1 -----------------------[ key ]----------------------> 2 + * 1 -------------[ constraint / column name ]-----------> 2 + * + * 2 --------------------[ data type ]-------------------> 3 + * + * 3 ---------------------[ options ]--------------------> 4 + * + * 4 --------------------[ REFERENCES ]------------------> 4 + * + * 5 ------------------------[ , ]-----------------------> 1 + * 5 ------------------------[ ) ]-----------------------> 6 (-1) + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + if (($token->type !== TokenType::Operator) || ($token->value !== '(')) { + $parser->error('An opening bracket was expected.', $token); + + break; + } + + $state = 1; + } elseif ($state === 1) { + if ($token->type === TokenType::Keyword && $token->keyword === 'CONSTRAINT') { + $expr->isConstraint = true; + } elseif (($token->type === TokenType::Keyword) && ($token->flags & Token::FLAG_KEYWORD_KEY)) { + $expr->key = Keys::parse($parser, $list); + $state = 4; + } elseif ($token->type === TokenType::Symbol || $token->type === TokenType::None) { + $expr->name = $token->value; + if (! $expr->isConstraint) { + $state = 2; + } + } elseif ($token->type === TokenType::Keyword) { + if ($token->flags & Token::FLAG_KEYWORD_RESERVED) { + // Reserved keywords can't be used + // as field names without backquotes + $parser->error( + 'A symbol name was expected! ' + . 'A reserved keyword can not be used ' + . 'as a column name without backquotes.', + $token, + ); + + return $ret; + } + + // Non-reserved keywords are allowed without backquotes + $expr->name = $token->value; + $state = 2; + } else { + $parser->error('A symbol name was expected!', $token); + + return $ret; + } + } elseif ($state === 2) { + $expr->type = DataTypes::parse($parser, $list); + $state = 3; + } elseif ($state === 3) { + $expr->options = OptionsArrays::parse($parser, $list, self::FIELD_OPTIONS); + $state = 4; + } elseif ($state === 4) { + if ($token->type === TokenType::Keyword && $token->keyword === 'REFERENCES') { + ++$list->idx; // Skipping keyword 'REFERENCES'. + $expr->references = References::parse($parser, $list); + } else { + --$list->idx; + } + + $state = 5; + } else { + if (! empty($expr->type) || ! empty($expr->key)) { + $ret[] = $expr; + } + + $expr = new CreateDefinition(); + if ($token->value === ',') { + $state = 1; + } elseif ($token->value === ')') { + $state = 6; + ++$list->idx; + break; + } else { + $parser->error('A comma or a closing bracket was expected.', $token); + $state = 0; + break; + } + } + } + + // Last iteration was not saved. + if (! empty($expr->type) || ! empty($expr->key)) { + $ret[] = $expr; + } + + if (($state !== 0) && ($state !== 6)) { + $parser->error('A closing bracket was expected.', $list->tokens[$list->idx - 1]); + } + + --$list->idx; + + return $ret; + } + + /** @param CreateDefinition[] $component the component to be built */ + public static function buildAll(array $component): string + { + return "(\n " . implode(",\n ", $component) . "\n)"; + } +} diff --git a/src/Parsers/DataTypes.php b/src/Parsers/DataTypes.php new file mode 100644 index 000000000..8b961bc02 --- /dev/null +++ b/src/Parsers/DataTypes.php @@ -0,0 +1,102 @@ + 1, + 'CHARACTER SET' => [ + 2, + 'var', + ], + 'CHARSET' => [ + 2, + 'var', + ], + 'COLLATE' => [ + 3, + 'var', + ], + 'UNSIGNED' => 4, + 'ZEROFILL' => 5, + ]; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): DataType|null + { + $ret = new DataType(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -------------------[ data type ]--------------------> 1 + * + * 1 ----------------[ size and options ]----------------> 2 + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + $ret->name = strtoupper((string) $token->value); + if (($token->type !== TokenType::Keyword) || (! ($token->flags & Token::FLAG_KEYWORD_DATA_TYPE))) { + $parser->error('Unrecognized data type.', $token); + } + + $state = 1; + } elseif ($state === 1) { + if (($token->type === TokenType::Operator) && ($token->value === '(')) { + $parameters = ArrayObjs::parse($parser, $list); + ++$list->idx; + $ret->parameters = ($ret->name === 'ENUM') || ($ret->name === 'SET') ? + $parameters->raw : $parameters->values; + } + + $ret->options = OptionsArrays::parse($parser, $list, self::DATA_TYPE_OPTIONS); + ++$list->idx; + break; + } + } + + if (empty($ret->name)) { + return null; + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Components/ExpressionArray.php b/src/Parsers/ExpressionArray.php similarity index 51% rename from src/Components/ExpressionArray.php rename to src/Parsers/ExpressionArray.php index eb05aac9d..76dfaba11 100644 --- a/src/Components/ExpressionArray.php +++ b/src/Parsers/ExpressionArray.php @@ -1,33 +1,38 @@ $options parameters for parsing * * @return Expression[] + * + * @throws ParserException */ - public static function parse(Parser $parser, TokensList $list, array $options = []) + public static function parse(Parser $parser, TokensList $list, array $options = []): array { $ret = []; @@ -40,88 +45,80 @@ public static function parse(Parser $parser, TokensList $list, array $options = * * 1 ------------------------[ , ]------------------------> 0 * 1 -----------------------[ else ]----------------------> (END) - * - * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { continue; } - if (($token->type === Token::TYPE_KEYWORD) + if ( + ($token->type === TokenType::Keyword) && ($token->flags & Token::FLAG_KEYWORD_RESERVED) && ((~$token->flags & Token::FLAG_KEYWORD_FUNCTION)) && ($token->value !== 'DUAL') && ($token->value !== 'NULL') && ($token->value !== 'CASE') + && ($token->value !== 'NOT') ) { // No keyword is expected. break; } if ($state === 0) { - if ($token->type === Token::TYPE_KEYWORD - && $token->value === 'CASE' - ) { - $expr = CaseExpression::parse($parser, $list, $options); + if ($token->type === TokenType::Keyword && $token->value === 'CASE') { + $expr = CaseExpressions::parse($parser, $list, $options); } else { - $expr = Expression::parse($parser, $list, $options); + $expr = Expressions::parse($parser, $list, $options); } if ($expr === null) { break; } + $ret[] = $expr; $state = 1; } elseif ($state === 1) { - if ($token->value === ',') { - $state = 0; - } else { + if ($token->value !== ',') { break; } + + $state = 0; } } if ($state === 0) { - $parser->error( - 'An expression was expected.', - $list->tokens[$list->idx] - ); + $parser->error('An expression was expected.', $list->tokens[$list->idx]); } --$list->idx; + $retIndex = count($ret) - 1; + if (isset($ret[$retIndex])) { + $expr = $ret[$retIndex]->expr; + if (preg_match('/\s*--\s.*$/', $expr, $matches)) { + $found = $matches[0]; + $ret[$retIndex]->expr = substr($expr, 0, strlen($expr) - strlen($found)); + } + } return $ret; } - /** - * @param ExpressionArray[] $component the component to be built - * @param array $options parameters for building - * - * @return string - */ - public static function build($component, array $options = []) + /** @param Expression[] $component the component to be built */ + public static function buildAll(array $component): string { - $ret = []; - foreach ($component as $frag) { - $ret[] = $frag::build($frag); - } - - return implode(', ', $ret); + return implode(', ', $component); } } diff --git a/src/Parsers/Expressions.php b/src/Parsers/Expressions.php new file mode 100644 index 000000000..9e943f848 --- /dev/null +++ b/src/Parsers/Expressions.php @@ -0,0 +1,370 @@ + $options parameters for parsing + * + * @throws ParserException + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): Expression|null + { + $ret = new Expression(); + + /** + * Whether current tokens make an expression or a table reference. + */ + $isExpr = false; + + /** + * Whether a period was previously found. + */ + $dot = false; + + /** + * Whether an alias is expected. Is 2 if `AS` keyword was found. + */ + $alias = false; + + /** + * Counts brackets. + */ + $brackets = 0; + + /** + * Keeps track of the last two previous tokens. + */ + $prev = [ + null, + null, + ]; + + // When a field is parsed, no parentheses are expected. + if (! empty($options['parseField'])) { + $options['breakOnParentheses'] = true; + $options['field'] = $options['parseField']; + } + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + // If the token is a closing C comment from a MySQL command, it must be ignored. + if ($isExpr && $token->token !== '*/') { + $ret->expr .= $token->token; + } + + continue; + } + + if ($token->type === TokenType::Keyword) { + if (($brackets > 0) && empty($ret->subquery) && ! empty(Parser::STATEMENT_PARSERS[$token->keyword])) { + // A `(` was previously found and this keyword is the + // beginning of a statement, so this is a subquery. + $ret->subquery = $token->keyword; + } elseif ( + ($token->flags & Token::FLAG_KEYWORD_FUNCTION) + && (empty($options['parseField']) + && ! $alias) + ) { + $isExpr = true; + } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) && ($brackets === 0)) { + if (! in_array($token->keyword, self::ALLOWED_KEYWORDS, true)) { + // A reserved keyword that is not allowed in the + // expression was found so the expression must have + // ended and a new clause is starting. + break; + } + + if ($token->keyword === 'AS') { + if (! empty($options['breakOnAlias'])) { + break; + } + + if ($alias) { + $parser->error('An alias was expected.', $token); + break; + } + + $alias = true; + continue; + } + + if ($token->keyword === 'CASE') { + // For a use of CASE like + // 'SELECT a = CASE .... END, b=1, `id`, ... FROM ...' + $tempCaseExpr = CaseExpressions::parse($parser, $list); + $ret->expr .= $tempCaseExpr->build(); + $isExpr = true; + continue; + } + + $isExpr = true; + } elseif ( + $brackets === 0 && strlen((string) $ret->expr) > 0 && ! $alias + && ($ret->table === null || $ret->table === '') + ) { + /* End of expression */ + break; + } + } + + if ( + ($token->type === TokenType::Number) + || ($token->type === TokenType::Bool) + || (($token->type === TokenType::Symbol) + && ($token->flags & Token::FLAG_SYMBOL_VARIABLE)) + || (($token->type === TokenType::Symbol) + && ($token->flags & Token::FLAG_SYMBOL_PARAMETER)) + || (($token->type === TokenType::Operator) + && ($token->value !== '.')) + ) { + if (! empty($options['parseField'])) { + break; + } + + // Numbers, booleans and operators (except dot) are usually part + // of expressions. + $isExpr = true; + } + + if ($token->type === TokenType::Operator) { + if (! empty($options['breakOnParentheses']) && (($token->value === '(') || ($token->value === ')'))) { + // No brackets were expected. + break; + } + + if ($token->value === '(') { + ++$brackets; + if ( + empty($ret->function) && ($prev[1] !== null) + && (($prev[1]->type === TokenType::None) + || ($prev[1]->type === TokenType::Symbol) + || (($prev[1]->type === TokenType::Keyword) + && ($prev[1]->flags & Token::FLAG_KEYWORD_FUNCTION))) + ) { + $ret->function = $prev[1]->value; + } + } elseif ($token->value === ')') { + if ($brackets === 0) { + // Not our bracket + break; + } + + --$brackets; + if ($brackets === 0) { + if (! empty($options['parenthesesDelimited'])) { + // The current token is the last bracket, the next + // one will be outside the expression. + $ret->expr .= $token->token; + ++$list->idx; + break; + } + } elseif ($brackets < 0) { + // $parser->error('Unexpected closing bracket.', $token); + // $brackets = 0; + break; + } + } elseif ($token->value === ',') { + // Expressions are comma-delimited. + if ($brackets === 0) { + break; + } + } + } + + // Saving the previous tokens. + $prev[0] = $prev[1]; + $prev[1] = $token; + + if ($alias) { + // An alias is expected (the keyword `AS` was previously found). + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $token->value; + $alias = false; + } elseif ($isExpr) { + // Handling aliases. + if ( + $brackets === 0 + && ($prev[0] === null + || (($prev[0]->type !== TokenType::Operator || $prev[0]->token === ')') + && ($prev[0]->type !== TokenType::Keyword + || ! ($prev[0]->flags & Token::FLAG_KEYWORD_RESERVED)))) + && (($prev[1]->type === TokenType::String) + || ($prev[1]->type === TokenType::Symbol + && ! ($prev[1]->flags & Token::FLAG_SYMBOL_VARIABLE) + && ! ($prev[1]->flags & Token::FLAG_SYMBOL_PARAMETER)) + || ($prev[1]->type === TokenType::None + && $prev[1]->token !== 'OVER')) + ) { + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $prev[1]->value; + } else { + $currIdx = $list->idx; + --$list->idx; + $beforeToken = $list->getPrevious(); + $list->idx = $currIdx; + // columns names tokens are of type NONE, or SYMBOL (`col`), and the columns options + // would start with a token of type KEYWORD, in that case, we want to have a space + // between the tokens. + if ( + $ret->expr !== null && + $beforeToken && + ($beforeToken->type === TokenType::None || + $beforeToken->type === TokenType::Symbol || $beforeToken->type === TokenType::String) && + $token->type === TokenType::Keyword + ) { + $ret->expr = rtrim($ret->expr, ' ') . ' '; + } + + $ret->expr .= $token->token; + } + } else { + if (($token->type === TokenType::Operator) && ($token->value === '.')) { + // Found a `.` which means we expect a column name and + // the column name we parsed is actually the table name + // and the table name is actually a database name. + if (! empty($ret->database) || $dot) { + $parser->error('Unexpected dot.', $token); + } + + $ret->database = $ret->table; + $ret->table = $ret->column; + $ret->column = null; + $dot = true; + $ret->expr .= $token->token; + } else { + $field = empty($options['field']) ? 'column' : $options['field']; + if (empty($ret->$field)) { + $ret->$field = $token->value; + $ret->expr .= $token->token; + $dot = false; + } else { + // No alias is expected. + if (! empty($options['breakOnAlias'])) { + break; + } + + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $token->value; + } + } + } + } + + if ($alias) { + $parser->error('An alias was expected.', $list->tokens[$list->idx - 1]); + } + + // White-spaces might be added at the end. + $ret->expr = trim((string) $ret->expr); + + if ($ret->expr === '') { + return null; + } + + --$list->idx; + + return $ret; + } + + /** @param Expression[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(', ', $component); + } +} diff --git a/src/Parsers/FunctionCalls.php b/src/Parsers/FunctionCalls.php new file mode 100644 index 000000000..096cf0920 --- /dev/null +++ b/src/Parsers/FunctionCalls.php @@ -0,0 +1,71 @@ + $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): FunctionCall + { + $ret = new FunctionCall(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ----------------------[ name ]-----------------------> 1 + * + * 1 --------------------[ parameters ]-------------------> (END) + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + --$list->idx; // Let last token to previous one to avoid "This type of clause was previously parsed." + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + if ($token->type === TokenType::Operator && $token->value === '(') { + --$list->idx; // ArrayObj needs to start with `(` + $state = 1; + continue;// do not add this token to the name + } + + $ret->name .= $token->value; + } elseif ($state === 1) { + $ret->parameters = ArrayObjs::parse($parser, $list); + break; + } + } + + return $ret; + } +} diff --git a/src/Parsers/GroupKeywords.php b/src/Parsers/GroupKeywords.php new file mode 100644 index 000000000..c3d6f8048 --- /dev/null +++ b/src/Parsers/GroupKeywords.php @@ -0,0 +1,99 @@ + $options parameters for parsing + * + * @return GroupKeyword[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new GroupKeyword(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 --------------------[ expression ]-------------------> 1 + * + * 1 ------------------------[ , ]------------------------> 0 + * 1 -------------------[ ASC / DESC ]--------------------> 1 + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + $expr->expr = Expressions::parse($parser, $list); + $state = 1; + } else { + if ( + ($token->type === TokenType::Keyword) + && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) + ) { + $expr->type = OrderSortKeyword::from($token->keyword); + } elseif (($token->type === TokenType::Operator) && ($token->value === ',')) { + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + $expr = new GroupKeyword(); + $state = 0; + } else { + break; + } + } + } + + // Last iteration was not processed. + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** @param GroupKeyword[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(', ', $component); + } +} diff --git a/src/Parsers/IndexHints.php b/src/Parsers/IndexHints.php new file mode 100644 index 000000000..bf34d866f --- /dev/null +++ b/src/Parsers/IndexHints.php @@ -0,0 +1,143 @@ + $options parameters for parsing + * + * @return IndexHint[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + $expr = new IndexHint(); + $expr->type = $options['type'] ?? ''; + /** + * The state of the parser. + * + * Below are the states of the parser. + * 0 ----------------- [ USE/IGNORE/FORCE ]-----------------> 1 + * 1 -------------------- [ INDEX/KEY ] --------------------> 2 + * 2 ----------------------- [ FOR ] -----------------------> 3 + * 2 -------------------- [ expr_list ] --------------------> 0 + * 3 -------------- [ JOIN/GROUP BY/ORDER BY ] -------------> 4 + * 4 -------------------- [ expr_list ] --------------------> 0 + */ + $state = 0; + + // By design, the parser will parse first token after the keyword. So, the keyword + // must be analyzed too, in order to determine the type of this index hint. + if ($list->idx > 0) { + --$list->idx; + } + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + switch ($state) { + case 0: + if ($token->type === TokenType::Keyword) { + if ($token->keyword !== 'USE' && $token->keyword !== 'IGNORE' && $token->keyword !== 'FORCE') { + break 2; + } + + $expr->type = $token->keyword; + $state = 1; + } + + break; + case 1: + if ($token->type === TokenType::Keyword) { + if ($token->keyword === 'INDEX' || $token->keyword === 'KEY') { + $expr->indexOrKey = $token->keyword; + } else { + $parser->error('Unexpected keyword.', $token); + } + + $state = 2; + } else { + // we expect the token to be a keyword + $parser->error('Unexpected token.', $token); + } + + break; + case 2: + if ($token->type === TokenType::Keyword && $token->keyword === 'FOR') { + $state = 3; + } else { + $expr->indexes = ExpressionArray::parse($parser, $list); + $state = 0; + $ret[] = $expr; + $expr = new IndexHint(); + } + + break; + case 3: + if ($token->type === TokenType::Keyword) { + if ( + $token->keyword === 'JOIN' + || $token->keyword === 'GROUP BY' + || $token->keyword === 'ORDER BY' + ) { + $expr->for = $token->keyword; + } else { + $parser->error('Unexpected keyword.', $token); + } + + $state = 4; + } else { + // we expect the token to be a keyword + $parser->error('Unexpected token.', $token); + } + + break; + case 4: + $expr->indexes = ExpressionArray::parse($parser, $list); + $state = 0; + $ret[] = $expr; + $expr = new IndexHint(); + break; + } + } + + --$list->idx; + + return $ret; + } + + /** @param IndexHint[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(' ', $component); + } +} diff --git a/src/Parsers/IntoKeywords.php b/src/Parsers/IntoKeywords.php new file mode 100644 index 000000000..202cbd948 --- /dev/null +++ b/src/Parsers/IntoKeywords.php @@ -0,0 +1,119 @@ + $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): IntoKeyword + { + $ret = new IntoKeyword(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ name ]----------------------> 1 + * 0 ---------------------[ OUTFILE ]---------------------> 2 + * + * 1 ------------------------[ ( ]------------------------> (END) + * + * 2 ---------------------[ filename ]--------------------> 1 + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if (($token->type === TokenType::Keyword) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + if (($state === 0) && ($token->keyword === 'OUTFILE')) { + $ret->type = 'OUTFILE'; + $state = 2; + continue; + } + + // No other keyword is expected except for $state = 4, which expects `LINES` + if ($state !== 4) { + break; + } + } + + if ($state === 0) { + if ( + (isset($options['fromInsert']) + && $options['fromInsert']) + || (isset($options['fromReplace']) + && $options['fromReplace']) + ) { + $ret->dest = Expressions::parse( + $parser, + $list, + [ + 'parseField' => 'table', + 'breakOnAlias' => true, + ], + ); + } else { + $ret->values = ExpressionArray::parse($parser, $list); + } + + $state = 1; + } elseif ($state === 1) { + if (($token->type === TokenType::Operator) && ($token->value === '(')) { + $ret->columns = ArrayObjs::parse($parser, $list)->values; + ++$list->idx; + } + + break; + } elseif ($state === 2) { + $ret->dest = $token->value; + + $state = 3; + } elseif ($state === 3) { + $ret->parseFileOptions($parser, $list, $token->keyword); + $state = 4; + } elseif ($state === 4) { + if ($token->type === TokenType::Keyword && $token->keyword !== 'LINES') { + break; + } + + $ret->parseFileOptions($parser, $list, $token->keyword); + $state = 5; + } + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Parsers/JoinKeywords.php b/src/Parsers/JoinKeywords.php new file mode 100644 index 000000000..67740900c --- /dev/null +++ b/src/Parsers/JoinKeywords.php @@ -0,0 +1,141 @@ + $options parameters for parsing + * + * @return JoinKeyword[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new JoinKeyword(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ JOIN ]----------------------> 1 + * + * 1 -----------------------[ expr ]----------------------> 2 + * + * 2 -------------------[ index_hints ]-------------------> 2 + * 2 ------------------------[ ON ]-----------------------> 3 + * 2 -----------------------[ USING ]---------------------> 4 + * + * 3 --------------------[ conditions ]-------------------> 0 + * + * 4 ----------------------[ columns ]--------------------> 0 + */ + $state = 0; + + // By design, the parser will parse first token after the keyword. + // In this case, the keyword must be analyzed too, in order to determine + // the type of this join. + if ($list->idx > 0) { + --$list->idx; + } + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + if (($token->type !== TokenType::Keyword) || empty(JoinKeyword::JOINS[$token->keyword])) { + break; + } + + $expr->type = JoinKeyword::JOINS[$token->keyword]; + $state = 1; + } elseif ($state === 1) { + $expr->expr = Expressions::parse($parser, $list, ['field' => 'table']); + $state = 2; + } elseif ($state === 2) { + if ($token->type === TokenType::Keyword) { + switch ($token->keyword) { + case 'ON': + $state = 3; + break; + case 'USING': + $state = 4; + break; + case 'USE': + case 'IGNORE': + case 'FORCE': + // Adding index hint on the JOIN clause. + $expr->indexHints = IndexHints::parse($parser, $list); + break; + default: + if (empty(JoinKeyword::JOINS[$token->keyword])) { + /* Next clause is starting */ + break 2; + } + + $ret[] = $expr; + $expr = new JoinKeyword(); + $expr->type = JoinKeyword::JOINS[$token->keyword]; + $state = 1; + + break; + } + } + } elseif ($state === 3) { + $expr->on = Conditions::parse($parser, $list); + $ret[] = $expr; + $expr = new JoinKeyword(); + $state = 0; + } else { + $expr->using = ArrayObjs::parse($parser, $list); + $ret[] = $expr; + $expr = new JoinKeyword(); + $state = 0; + } + } + + if (! empty($expr->type)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** @param JoinKeyword[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(' ', $component); + } +} diff --git a/src/Parsers/Keys.php b/src/Parsers/Keys.php new file mode 100644 index 000000000..b0a68d96e --- /dev/null +++ b/src/Parsers/Keys.php @@ -0,0 +1,198 @@ + [ + 1, + 'var=', + ], + 'USING' => [ + 2, + 'var', + ], + 'WITH PARSER' => [ + 3, + 'var', + ], + 'COMMENT' => [ + 4, + 'var', + ], + // MariaDB options + 'CLUSTERING' => [ + 4, + 'var=', + ], + 'ENGINE_ATTRIBUTE' => [ + 5, + 'var=', + ], + 'SECONDARY_ENGINE_ATTRIBUTE' => [ + 5, + 'var=', + ], + // MariaDB & MySQL options + 'VISIBLE' => 6, + 'INVISIBLE' => 6, + // MariaDB options + 'IGNORED' => 10, + 'NOT IGNORED' => 10, + ]; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): Key + { + $ret = new Key(); + + /** + * Last parsed column. + */ + $lastColumn = []; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ type ]---------------------------> 1 + * + * 1 ---------------------[ name ]---------------------------> 1 + * 1 ---------------------[ columns ]------------------------> 2 + * 1 ---------------------[ expression ]---------------------> 5 + * + * 2 ---------------------[ column length ]------------------> 3 + * 3 ---------------------[ column length ]------------------> 2 + * 2 ---------------------[ options ]------------------------> 4 + * 5 ---------------------[ expression ]---------------------> 4 + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + $ret->type = $token->value; + $state = 1; + } elseif ($state === 1) { + if (($token->type === TokenType::Operator) && ($token->value === '(')) { + $positionBeforeSearch = $list->idx; + $list->idx++;// Ignore the current token "(" or the search condition will always be true + $nextToken = $list->getNext(); + $list->idx = $positionBeforeSearch;// Restore the position + + if ($nextToken !== null && $nextToken->value === '(') { + // Switch to expression mode + $state = 5; + } else { + $state = 2; + } + } else { + $ret->name = $token->value; + } + } elseif ($state === 2) { + if ($token->type === TokenType::Operator) { + if ($token->value === '(') { + $state = 3; + } elseif (($token->value === ',') || ($token->value === ')')) { + $state = $token->value === ',' ? 2 : 4; + if ($lastColumn !== []) { + $ret->columns[] = $lastColumn; + $lastColumn = []; + } + } + } elseif ( + ( + $token->type === TokenType::Keyword + ) + && + ( + ($token->keyword === 'ASC') || ($token->keyword === 'DESC') + ) + ) { + $lastColumn['order'] = $token->keyword; + } else { + $lastColumn['name'] = $token->value; + } + } elseif ($state === 3) { + if (($token->type === TokenType::Operator) && ($token->value === ')')) { + $state = 2; + } else { + $lastColumn['length'] = $token->value; + } + } elseif ($state === 4) { + $ret->options = OptionsArrays::parse($parser, $list, self::KEY_OPTIONS); + ++$list->idx; + break; + } elseif ($state === 5) { + if ($token->type === TokenType::Operator) { + // This got back to here and we reached the end of the expression + if ($token->value === ')') { + $state = 4;// go back to state 4 to fetch options + continue; + } + + // The expression is not finished, adding a separator for the next expression + if ($token->value === ',') { + $ret->expr .= ', '; + continue; + } + + // Start of the expression + if ($token->value === '(') { + // This is the first expression, set to empty + if ($ret->expr === null) { + $ret->expr = ''; + } + + $ret->expr .= Expressions::parse($parser, $list, ['parenthesesDelimited' => true]); + continue; + } + // Another unexpected operator was found + } + + // Something else than an operator was found + $parser->error('Unexpected token.', $token); + } + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Parsers/Limits.php b/src/Parsers/Limits.php new file mode 100644 index 000000000..de5019306 --- /dev/null +++ b/src/Parsers/Limits.php @@ -0,0 +1,89 @@ + $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): Limit + { + $ret = new Limit(); + + $offset = false; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if (($token->type === TokenType::Keyword) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + break; + } + + if ($token->type === TokenType::Keyword && $token->keyword === 'OFFSET') { + if ($offset) { + $parser->error('An offset was expected.', $token); + } + + $offset = true; + continue; + } + + if (($token->type === TokenType::Operator) && ($token->value === ',')) { + $ret->offset = $ret->rowCount; + $ret->rowCount = 0; + continue; + } + + // Skip if not a number or a bind parameter (?) + if ( + ! ($token->type === TokenType::Number + || ($token->type === TokenType::Symbol && ($token->flags & Token::FLAG_SYMBOL_PARAMETER))) + ) { + break; + } + + if ($offset) { + $ret->offset = $token->value; + $offset = false; + } else { + $ret->rowCount = $token->value; + } + } + + if ($offset) { + $parser->error('An offset was expected.', $list->tokens[$list->idx - 1]); + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Parsers/LockExpressions.php b/src/Parsers/LockExpressions.php new file mode 100644 index 000000000..54241bbac --- /dev/null +++ b/src/Parsers/LockExpressions.php @@ -0,0 +1,164 @@ + $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): LockExpression + { + $ret = new LockExpression(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------- [ tbl_name ] -----------------> 1 + * 1 ---------------- [ lock_type ] ----------------> 2 + * 2 -------------------- [ , ] --------------------> break + */ + $state = 0; + + $prevToken = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ( + $token->type === TokenType::Delimiter + || ($token->type === TokenType::Operator + && $token->value === ',') + ) { + break; + } + + if ($state === 0) { + $ret->table = Expressions::parse($parser, $list, ['parseField' => 'table']); + $state = 1; + } elseif ($state === 1) { + // parse lock type + $ret->type = self::parseLockType($parser, $list); + $state = 2; + } + + $prevToken = $token; + } + + // 2 is the only valid end state + if ($state !== 2) { + $parser->error('Unexpected end of LOCK expression.', $prevToken); + } + + --$list->idx; + + return $ret; + } + + private static function parseLockType(Parser $parser, TokensList $list): string + { + $lockType = ''; + + /** + * The state of the parser while parsing for lock type. + * + * Below are the states of the parser. + * + * 0 ---------------- [ READ ] -----------------> 1 + * 0 ------------- [ LOW_PRIORITY ] ------------> 2 + * 0 ---------------- [ WRITE ] ----------------> 3 + * 1 ---------------- [ LOCAL ] ----------------> 3 + * 2 ---------------- [ WRITE ] ----------------> 3 + */ + $state = 0; + + $prevToken = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ( + $token->type === TokenType::Delimiter + || ($token->type === TokenType::Operator + && $token->value === ',') + ) { + --$list->idx; + break; + } + + // Skipping whitespaces and comments. + if ($token->type === TokenType::Whitespace || $token->type === TokenType::Comment) { + continue; + } + + // We only expect keywords + if ($token->type !== TokenType::Keyword) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($state === 0) { + if ($token->keyword === 'READ') { + $state = 1; + } elseif ($token->keyword === 'LOW_PRIORITY') { + $state = 2; + } elseif ($token->keyword === 'WRITE') { + $state = 3; + } else { + $parser->error('Unexpected keyword.', $token); + break; + } + + $lockType .= $token->keyword; + } elseif ($state === 1) { + if ($token->keyword !== 'LOCAL') { + $parser->error('Unexpected keyword.', $token); + break; + } + + $lockType .= ' ' . $token->keyword; + $state = 3; + } elseif ($state === 2) { + if ($token->keyword !== 'WRITE') { + $parser->error('Unexpected keyword.', $token); + break; + } + + $lockType .= ' ' . $token->keyword; + $state = 3; // parsing over + } + + $prevToken = $token; + } + + // Only two possible end states + if ($state !== 1 && $state !== 3) { + $parser->error('Unexpected end of LOCK expression.', $prevToken); + } + + return $lockType; + } +} diff --git a/src/Parsers/OptionsArrays.php b/src/Parsers/OptionsArrays.php new file mode 100644 index 000000000..f3dea83c7 --- /dev/null +++ b/src/Parsers/OptionsArrays.php @@ -0,0 +1,250 @@ + $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): OptionsArray + { + $ret = new OptionsArray(); + + /** + * The ID that will be assigned to duplicate options. + */ + $lastAssignedId = count($options) + 1; + + /** + * The option that was processed last time. + */ + $lastOption = null; + + /** + * The index of the option that was processed last time. + */ + $lastOptionId = 0; + + /** + * Counts brackets. + */ + $brackets = 0; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ option ]----------------------> 1 + * + * 1 -------------------[ = (optional) ]------------------> 2 + * + * 2 ----------------------[ value ]----------------------> 0 + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping comments. + if ($token->type === TokenType::Comment) { + continue; + } + + // Skipping whitespace if not parsing value. + if (($token->type === TokenType::Whitespace) && ($brackets === 0)) { + continue; + } + + if ($lastOption === null) { + $upper = strtoupper($token->token); + if (! isset($options[$upper])) { + // There is no option to be processed. + break; + } + + $lastOption = $options[$upper]; + $lastOptionId = is_array($lastOption) ? + $lastOption[0] : $lastOption; + $state = 0; + + // Checking for option conflicts. + // For example, in `SELECT` statements the keywords `ALL` + // and `DISTINCT` conflict and if used together, they + // produce an invalid query. + // + // Usually, tokens can be identified in the array by the + // option ID, but if conflicts occur, a generated option ID + // is used. + // + // The first pseudo duplicate ID is the maximum value of the + // real options (e.g. if there are 5 options, the first + // fake ID is 6). + if (isset($ret->options[$lastOptionId])) { + $parser->error( + sprintf( + Translator::gettext('This option conflicts with "%1$s".'), + is_array($ret->options[$lastOptionId]) + ? $ret->options[$lastOptionId]['name'] + : $ret->options[$lastOptionId], + ), + $token, + ); + $lastOptionId = $lastAssignedId++; + } + } + + if ($state === 0) { + if (! is_array($lastOption)) { + // This is a just keyword option without any value. + // This is the beginning and the end of it. + $ret->options[$lastOptionId] = $token->value; + $lastOption = null; + $state = 0; + } elseif (($lastOption[1] === 'var') || ($lastOption[1] === 'var=')) { + // This is a keyword that is followed by a value. + // This is only the beginning. The value is parsed in state + // 1 and 2. State 1 is used to skip the first equals sign + // and state 2 to parse the actual value. + $ret->options[$lastOptionId] = [ + // @var string The name of the option. + 'name' => $token->value, + // @var bool Whether it contains an equal sign. + // This is used by the builder to rebuild it. + 'equals' => $lastOption[1] === 'var=', + // @var string Raw value. + 'expr' => '', + // @var string Processed value. + 'value' => '', + ]; + $state = 1; + } elseif ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { + // This is a keyword that is followed by an expression. + // The expression is used by the specialized parser. + + // Skipping this option in order to parse the expression. + ++$list->idx; + $ret->options[$lastOptionId] = [ + // @var string The name of the option. + 'name' => $token->value, + // @var bool Whether it contains an equal sign. + // This is used by the builder to rebuild it. + 'equals' => $lastOption[1] === 'expr=', + // @var Expression The parsed expression. + 'expr' => '', + // No value when it is an expression. + 'value' => null, + ]; + $state = 1; + } + } elseif ($state === 1) { + $state = 2; + if ($token->token === '=') { + $ret->options[$lastOptionId]['equals'] = true; + continue; + } + } + + // This is outside the `elseif` group above because the change might + // change this iteration. + if ($state !== 2) { + continue; + } + + if ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { + $expression = Expressions::parse( + $parser, + $list, + empty($lastOption[2]) ? [] : $lastOption[2], + ); + $ret->options[$lastOptionId]['expr'] = ''; + if ($expression !== null) { + $ret->options[$lastOptionId]['value'] = $expression->expr; + $ret->options[$lastOptionId]['expr'] = $expression; + } + + $lastOption = null; + $state = 0; + } else { + if ($token->token === '(') { + ++$brackets; + } elseif ($token->token === ')') { + --$brackets; + } + + $ret->options[$lastOptionId]['expr'] .= $token->token; + + if ( + ! (($token->token === '(') && ($brackets === 1) + || (($token->token === ')') && ($brackets === 0))) + ) { + // First pair of brackets is being skipped. + $ret->options[$lastOptionId]['value'] .= $token->value; + } + + // Checking if we finished parsing. + if ($brackets === 0) { + $lastOption = null; + } + } + } + + /* + * We reached the end of statement without getting a value + * for an option for which a value was required + */ + if ( + $state === 1 + && $lastOption + && ($lastOption[1] === 'expr' + || $lastOption[1] === 'var' + || $lastOption[1] === 'var=' + || $lastOption[1] === 'expr=') + ) { + $parser->error( + sprintf( + 'Value/Expression for the option %1$s was expected.', + $ret->options[$lastOptionId]['name'], + ), + $list->tokens[$list->idx - 1], + ); + } + + if (empty($options['_UNSORTED'])) { + ksort($ret->options); + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Parsers/OrderKeywords.php b/src/Parsers/OrderKeywords.php new file mode 100644 index 000000000..b4205570d --- /dev/null +++ b/src/Parsers/OrderKeywords.php @@ -0,0 +1,99 @@ + $options parameters for parsing + * + * @return OrderKeyword[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new OrderKeyword(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 --------------------[ expression ]-------------------> 1 + * + * 1 ------------------------[ , ]------------------------> 0 + * 1 -------------------[ ASC / DESC ]--------------------> 1 + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + $expr->expr = Expressions::parse($parser, $list); + $state = 1; + } else { + if ( + ($token->type === TokenType::Keyword) + && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) + ) { + $expr->type = OrderSortKeyword::from($token->keyword); + } elseif (($token->type === TokenType::Operator) && ($token->value === ',')) { + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + $expr = new OrderKeyword(); + $state = 0; + } else { + break; + } + } + } + + // Last iteration was not processed. + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** @param OrderKeyword[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(', ', $component); + } +} diff --git a/src/Parsers/ParameterDefinitions.php b/src/Parsers/ParameterDefinitions.php new file mode 100644 index 000000000..7821b11ae --- /dev/null +++ b/src/Parsers/ParameterDefinitions.php @@ -0,0 +1,111 @@ + $options parameters for parsing + * + * @return ParameterDefinition[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new ParameterDefinition(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ ( ]------------------------> 1 + * + * 1 ----------------[ IN / OUT / INOUT ]----------------> 1 + * 1 ----------------------[ name ]----------------------> 2 + * + * 2 -------------------[ data type ]--------------------> 3 + * + * 3 ------------------------[ , ]-----------------------> 1 + * 3 ------------------------[ ) ]-----------------------> (END) + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + if (($token->type === TokenType::Operator) && ($token->value === '(')) { + $state = 1; + } + } elseif ($state === 1) { + if (($token->value === 'IN') || ($token->value === 'OUT') || ($token->value === 'INOUT')) { + $expr->inOut = $token->value; + ++$list->idx; + } elseif ($token->value === ')') { + ++$list->idx; + break; + } else { + $expr->name = $token->value; + $state = 2; + } + } elseif ($state === 2) { + $expr->type = DataTypes::parse($parser, $list); + $state = 3; + } else { + $ret[] = $expr; + $expr = new ParameterDefinition(); + if ($token->value === ',') { + $state = 1; + } elseif ($token->value === ')') { + ++$list->idx; + break; + } + } + } + + // Last iteration was not saved. + if (isset($expr->name) && ($expr->name !== '')) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** @param ParameterDefinition[] $component the component to be built */ + public static function buildAll(array $component): string + { + return '(' . implode(', ', $component) . ')'; + } +} diff --git a/src/Parsers/PartitionDefinitions.php b/src/Parsers/PartitionDefinitions.php new file mode 100644 index 000000000..cca15f3c0 --- /dev/null +++ b/src/Parsers/PartitionDefinitions.php @@ -0,0 +1,184 @@ +> + * @psalm-var array [ + 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', + ], + ]; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): PartitionDefinition + { + $ret = new PartitionDefinition(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -------------[ PARTITION | SUBPARTITION ]------------> 1 + * + * 1 -----------------------[ name ]----------------------> 2 + * + * 2 ----------------------[ VALUES ]---------------------> 3 + * + * 3 ---------------------[ LESS THAN ]-------------------> 4 + * 3 ------------------------[ IN ]-----------------------> 4 + * + * 4 -----------------------[ expr ]----------------------> 5 + * + * 5 ----------------------[ options ]--------------------> 6 + * + * 6 ------------------[ subpartitions ]------------------> (END) + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + $ret->isSubpartition = ($token->type === TokenType::Keyword) && ($token->keyword === 'SUBPARTITION'); + $state = 1; + } elseif ($state === 1) { + $ret->name = (string) $token->value; + + // Looking ahead for a 'VALUES' keyword. + // Loop until the end of the partition name (delimited by a whitespace) + while ($nextToken = $list->tokens[++$list->idx]) { + if ($nextToken->type !== TokenType::None) { + break; + } + + $ret->name .= $nextToken->value; + } + + $idx = $list->idx--; + // Get the first token after the white space. + $nextToken = $list->tokens[++$idx]; + + $state = ($nextToken->type === TokenType::Keyword) + && ($nextToken->value === 'VALUES') + ? 2 : 5; + } elseif ($state === 2) { + $state = 3; + } elseif ($state === 3) { + $ret->type = $token->value; + $state = 4; + } elseif ($state === 4) { + if ($token->value === 'MAXVALUE') { + $ret->expr = $token->value; + } else { + $ret->expr = Expressions::parse( + $parser, + $list, + [ + 'parenthesesDelimited' => true, + 'breakOnAlias' => true, + ], + ); + } + + $state = 5; + } elseif ($state === 5) { + $ret->options = OptionsArrays::parse($parser, $list, static::$partitionOptions); + $state = 6; + } elseif ($state === 6) { + if (($token->type === TokenType::Operator) && ($token->value === '(')) { + $ret->subpartitions = ArrayObjs::parse( + $parser, + $list, + ['type' => self::class], + ); + ++$list->idx; + } + + break; + } + } + + --$list->idx; + + return $ret; + } + + /** @param PartitionDefinition[] $component the component to be built */ + public static function buildAll(array $component): string + { + return "(\n" . implode(",\n", $component) . "\n)"; + } +} diff --git a/src/Parsers/References.php b/src/Parsers/References.php new file mode 100644 index 000000000..1c89c68a4 --- /dev/null +++ b/src/Parsers/References.php @@ -0,0 +1,98 @@ + [ + 1, + 'var', + ], + 'ON DELETE' => [ + 2, + 'var', + ], + 'ON UPDATE' => [ + 3, + 'var', + ], + ]; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): Reference + { + $ret = new Reference(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ----------------------[ table ]---------------------> 1 + * + * 1 ---------------------[ columns ]--------------------> 2 + * + * 2 ---------------------[ options ]--------------------> (END) + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + $ret->table = Expressions::parse( + $parser, + $list, + [ + 'parseField' => 'table', + 'breakOnAlias' => true, + ], + ); + $state = 1; + } elseif ($state === 1) { + $ret->columns = ArrayObjs::parse($parser, $list)->values; + $state = 2; + } else { + $ret->options = OptionsArrays::parse($parser, $list, self::REFERENCES_OPTIONS); + ++$list->idx; + break; + } + } + + --$list->idx; + + return $ret; + } +} diff --git a/src/Parsers/RenameOperations.php b/src/Parsers/RenameOperations.php new file mode 100644 index 000000000..71f29036c --- /dev/null +++ b/src/Parsers/RenameOperations.php @@ -0,0 +1,130 @@ + $options parameters for parsing + * + * @return RenameOperation[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new RenameOperation(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ old name ]--------------------> 1 + * + * 1 ------------------------[ TO ]-----------------------> 2 + * + * 2 ---------------------[ new name ]--------------------> 3 + * + * 3 ------------------------[ , ]------------------------> 0 + * 3 -----------------------[ else ]----------------------> (END) + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + if ($state === 0) { + $expr->old = Expressions::parse( + $parser, + $list, + [ + 'breakOnAlias' => true, + 'parseField' => 'table', + ], + ); + if (empty($expr->old)) { + $parser->error('The old name of the table was expected.', $token); + } + + $state = 1; + } elseif ($state === 1) { + if ($token->type !== TokenType::Keyword || $token->keyword !== 'TO') { + $parser->error('Keyword "TO" was expected.', $token); + break; + } + + $state = 2; + } elseif ($state === 2) { + $expr->new = Expressions::parse( + $parser, + $list, + [ + 'breakOnAlias' => true, + 'parseField' => 'table', + ], + ); + if (empty($expr->new)) { + $parser->error('The new name of the table was expected.', $token); + } + + $state = 3; + } else { + if (($token->type !== TokenType::Operator) || ($token->value !== ',')) { + break; + } + + $ret[] = $expr; + $expr = new RenameOperation(); + $state = 0; + } + } + + if ($state !== 3) { + $parser->error('A rename operation was expected.', $list->tokens[$list->idx - 1]); + } + + // Last iteration was not saved. + if (! empty($expr->old)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** @param RenameOperation[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(', ', $component); + } +} diff --git a/src/Parsers/SetOperations.php b/src/Parsers/SetOperations.php new file mode 100644 index 000000000..aa2b3b6ab --- /dev/null +++ b/src/Parsers/SetOperations.php @@ -0,0 +1,121 @@ + $options parameters for parsing + * + * @return SetOperation[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): array + { + $ret = []; + + $expr = new SetOperation(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ col_name ]--------------------> 0 + * 0 ---------------------[ = or := ]---------------------> 1 + * 1 -----------------------[ value ]---------------------> 1 + * 1 ------------------------[ , ]------------------------> 0 + */ + $state = 0; + + /** + * Token when the parser has seen the latest comma + */ + $commaLastSeenAt = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { + continue; + } + + // No keyword is expected. + if ( + ($token->type === TokenType::Keyword) + && ($token->flags & Token::FLAG_KEYWORD_RESERVED) + && ($state === 0) + ) { + break; + } + + if ($state === 0) { + if (in_array($token->token, ['=', ':='], true)) { + $state = 1; + } elseif ($token->value !== ',') { + $expr->column .= $token->token; + } elseif ($token->value === ',') { + $commaLastSeenAt = $token; + } + } else { + $tmp = Expressions::parse( + $parser, + $list, + ['breakOnAlias' => true], + ); + if ($tmp === null) { + $parser->error('Missing expression.', $token); + break; + } + + $expr->column = trim($expr->column); + $expr->value = $tmp->expr; + $ret[] = $expr; + $expr = new SetOperation(); + $state = 0; + $commaLastSeenAt = null; + } + } + + --$list->idx; + + // We saw a comma, but didn't see a column-value pair after it + if ($commaLastSeenAt !== null) { + $parser->error('Unexpected token.', $commaLastSeenAt); + } + + return $ret; + } + + /** @param SetOperation[] $component the component to be built */ + public static function buildAll(array $component): string + { + return implode(', ', $component); + } +} diff --git a/src/Parsers/UnionKeywords.php b/src/Parsers/UnionKeywords.php new file mode 100644 index 000000000..59312c402 --- /dev/null +++ b/src/Parsers/UnionKeywords.php @@ -0,0 +1,45 @@ + $options parameters for parsing + * + * @throws RuntimeException not implemented yet. + */ + public static function parse(Parser $parser, TokensList $list, array $options = []): never + { + throw new RuntimeException(Translator::gettext('Not implemented yet.')); + } + + /** @param list $component the component to be built */ + public static function buildAll(array $component): string + { + $tmp = []; + foreach ($component as $componentPart) { + $tmp[] = $componentPart[0] . ' ' . $componentPart[1]; + } + + return implode(' ', $tmp); + } +} diff --git a/src/Statement.php b/src/Statement.php index d2d0ed28f..db03a6f7b 100644 --- a/src/Statement.php +++ b/src/Statement.php @@ -1,25 +1,37 @@ > + * @psalm-var arrayfield`) was used in building. - * - * @var array */ $built = []; - /** - * Statement's clauses. - * - * @var array - */ - $clauses = $this->getClauses(); - - foreach ($clauses as $clause) { - /** - * The name of the clause. - * - * @var string - */ - $name = $clause[0]; - - /** - * The type of the clause. - * - * @see self::$CLAUSES - * - * @var int - */ - $type = $clause[1]; - - /** - * The builder (parser) of this clause. - * - * @var Component - */ - $class = Parser::$KEYWORD_PARSERS[$name]['class']; - + foreach ($this->getClauses() as [$name, $type]) { /** * The name of the field that is used as source for the builder. * Same field is used to store the result of parsing. - * - * @var string */ - $field = Parser::$KEYWORD_PARSERS[$name]['field']; + $field = Parser::KEYWORD_PARSERS[$name]['field']; // The field is empty, there is nothing to be built. if (empty($this->$field)) { @@ -167,21 +132,29 @@ public function build() } // Checking if this field was already built. - if ($type & 1) { + if ($type & self::ADD_CLAUSE) { if (! empty($built[$field])) { continue; } + $built[$field] = true; } // Checking if the name of the clause should be added. - if ($type & 2) { + if ($type & self::ADD_KEYWORD) { $query = trim($query) . ' ' . $name; } // Checking if the result of the builder should be added. - if ($type & 1) { - $query = trim($query) . ' ' . $class::build($this->$field); + if (! ($type & self::ADD_CLAUSE)) { + continue; + } + + if (is_array($this->$field)) { + $class = Parser::KEYWORD_PARSERS[$name]['class']; + $query = trim($query) . ' ' . $class::buildAll($this->$field); + } else { + $query = trim($query) . ' ' . $this->$field->build(); } } @@ -193,14 +166,14 @@ public function build() * * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed + * + * @throws ParserException */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { /** * Array containing all list of clauses parsed. * This is used to check for duplicates. - * - * @var array */ $parsedClauses = []; @@ -211,21 +184,17 @@ public function parse(Parser $parser, TokensList $list) * Whether options were parsed or not. * For statements that do not have any options this is set to `true` by * default. - * - * @var bool */ - $parsedOptions = empty(static::$OPTIONS); + $parsedOptions = static::$statementOptions === []; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } @@ -238,18 +207,18 @@ public function parse(Parser $parser, TokensList $list) // Only keywords are relevant here. Other parts of the query are // processed in the functions below. - if ($token->type !== Token::TYPE_KEYWORD) { - if (($token->type !== Token::TYPE_COMMENT) - && ($token->type !== Token::TYPE_WHITESPACE) - ) { + if ($token->type !== TokenType::Keyword) { + if (($token->type !== TokenType::Comment) && ($token->type !== TokenType::Whitespace)) { $parser->error('Unexpected token.', $token); } + continue; } // Unions are parsed by the parser because they represent more than // one statement. - if (($token->keyword === 'UNION') || + if ( + ($token->keyword === 'UNION') || ($token->keyword === 'UNION ALL') || ($token->keyword === 'UNION DISTINCT') || ($token->keyword === 'EXCEPT') || @@ -258,137 +227,90 @@ public function parse(Parser $parser, TokensList $list) break; } - $lastIdx = $list->idx; - - // ON DUPLICATE KEY UPDATE ... - // has to be parsed in parent statement (INSERT or REPLACE) - // so look for it and break - if ($this instanceof Statements\SelectStatement - && $token->value === 'ON' - ) { - ++$list->idx; // Skip ON - - // look for ON DUPLICATE KEY UPDATE - $first = $list->getNextOfType(Token::TYPE_KEYWORD); - $second = $list->getNextOfType(Token::TYPE_KEYWORD); - $third = $list->getNextOfType(Token::TYPE_KEYWORD); - - if ($first && $second && $third - && $first->value === 'DUPLICATE' - && $second->value === 'KEY' - && $third->value === 'UPDATE' - ) { - $list->idx = $lastIdx; - break; - } - } - $list->idx = $lastIdx; - /** * The name of the class that is used for parsing. - * - * @var Component */ $class = null; /** * The name of the field where the result of the parsing is stored. - * - * @var string */ $field = null; /** * Parser's options. - * - * @var array */ $options = []; // Looking for duplicated clauses. - if (! empty(Parser::$KEYWORD_PARSERS[$token->value]) - || ! empty(Parser::$STATEMENT_PARSERS[$token->value]) + if ( + is_string($token->value) + && ( + isset(Parser::KEYWORD_PARSERS[$token->value]) + || ( + isset(Parser::STATEMENT_PARSERS[$token->value]) + && Parser::STATEMENT_PARSERS[$token->value] !== '' + ) + ) ) { - if (! empty($parsedClauses[$token->value])) { - $parser->error( - 'This type of clause was previously parsed.', - $token - ); + if (array_key_exists($token->value, $parsedClauses)) { + $parser->error('This type of clause was previously parsed.', $token); break; } + $parsedClauses[$token->value] = true; } // Checking if this is the beginning of a clause. - // Fix Issue #221: As `truncate` is not a keyword + // Fix Issue #221: As `truncate` is not a keyword, // but it might be the beginning of a statement of truncate, // so let the value use the keyword field for truncate type. - $token_value = in_array($token->keyword, ['TRUNCATE']) ? $token->keyword : $token->value; - if (! empty(Parser::$KEYWORD_PARSERS[$token_value]) && $list->idx < $list->count) { - $class = Parser::$KEYWORD_PARSERS[$token_value]['class']; - $field = Parser::$KEYWORD_PARSERS[$token_value]['field']; - if (! empty(Parser::$KEYWORD_PARSERS[$token_value]['options'])) { - $options = Parser::$KEYWORD_PARSERS[$token_value]['options']; + $tokenValue = $token->keyword === 'TRUNCATE' ? $token->keyword : $token->value; + if (is_string($tokenValue) && isset(Parser::KEYWORD_PARSERS[$tokenValue]) && $list->idx < $list->count) { + $class = Parser::KEYWORD_PARSERS[$tokenValue]['class']; + $field = Parser::KEYWORD_PARSERS[$tokenValue]['field']; + if (isset(Parser::KEYWORD_PARSERS[$tokenValue]['options'])) { + $options = Parser::KEYWORD_PARSERS[$tokenValue]['options']; } } // Checking if this is the beginning of the statement. - if (! empty(Parser::$STATEMENT_PARSERS[$token->keyword])) { - if (! empty(static::$CLAUSES) // Undefined for some statements. - && empty(static::$CLAUSES[$token->value]) - ) { + if ( + isset(Parser::STATEMENT_PARSERS[$token->keyword]) + && Parser::STATEMENT_PARSERS[$token->keyword] !== '' + ) { + if (static::$clauses !== [] && is_string($token->value) && ! isset(static::$clauses[$token->value])) { // Some keywords (e.g. `SET`) may be the beginning of a // statement and a clause. - // If such keyword was found and it cannot be a clause of + // If such keyword was found, and it cannot be a clause of // this statement it means it is a new statement, but no // delimiter was found between them. $parser->error( 'A new statement was found, but no delimiter between it and the previous one.', - $token + $token, ); break; } + if (! $parsedOptions) { - if (empty(static::$OPTIONS[$token->value])) { + if (! array_key_exists((string) $token->value, static::$statementOptions)) { // Skipping keyword because if it is not a option. ++$list->idx; } - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); + + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); $parsedOptions = true; } } elseif ($class === null) { - if ($this instanceof Statements\SelectStatement - && ($token->value === 'FOR UPDATE' - || $token->value === 'LOCK IN SHARE MODE') - ) { - // Handle special end options in Select statement - // See Statements\SelectStatement::$END_OPTIONS - $this->end_options = OptionsArray::parse( - $parser, - $list, - static::$END_OPTIONS - ); - } elseif ($this instanceof Statements\SetStatement - && ($token->value === 'COLLATE' - || $token->value === 'DEFAULT') - ) { - // Handle special end options in SET statement - // See Statements\SetStatement::$END_OPTIONS - $this->end_options = OptionsArray::parse( - $parser, - $list, - static::$END_OPTIONS - ); - } else { + if (! ($this instanceof SetStatement) || ($token->value !== 'COLLATE' && $token->value !== 'DEFAULT')) { // There is no parser for this keyword and isn't the beginning // of a statement (so no options) either. $parser->error('Unrecognized keyword.', $token); continue; } + + // Handle special end options in SET statement + $this->endOptions = OptionsArrays::parse($parser, $list, SetStatement::STATEMENT_END_OPTIONS); } $this->before($parser, $list, $token); @@ -400,20 +322,12 @@ public function parse(Parser $parser, TokensList $list) $parser->error('Keyword at end of statement.', $token); continue; } + ++$list->idx; // Skipping keyword or last option. $this->$field = $class::parse($parser, $list, $options); } $this->after($parser, $list, $token); - - // #223 Here may make a patch, if last is delimiter, back one - if ($class !== null) { - if ((new $class()) instanceof FunctionCall) { - if ($list->offsetGet($list->idx)->type === Token::TYPE_DELIMITER) { - --$list->idx; - } - } - } } // This may be corrected by the parser. @@ -427,7 +341,7 @@ public function parse(Parser $parser, TokensList $list) * @param TokensList $list the list of tokens to be parsed * @param Token $token the token that is being parsed */ - public function before(Parser $parser, TokensList $list, Token $token) + public function before(Parser $parser, TokensList $list, Token $token): void { } @@ -438,28 +352,50 @@ public function before(Parser $parser, TokensList $list, Token $token) * @param TokensList $list the list of tokens to be parsed * @param Token $token the token that is being parsed */ - public function after(Parser $parser, TokensList $list, Token $token) + public function after(Parser $parser, TokensList $list, Token $token): void { } /** * Gets the clauses of this statement. * - * @return array + * @return array}> + */ + public function getClauses(): array + { + return static::$clauses; + } + + /** + * Gets the clause order of this statement as an array + * with clause as key and index as value. + * + * @return array */ - public function getClauses() + public function getClauseOrder(): array { - return static::$CLAUSES; + $clauses = []; + foreach (array_keys($this->getClauses()) as $key) { + if ($key === '_END_OPTIONS') { + // phpcs:ignore SlevomatCodingStandard.Classes.DisallowLateStaticBindingForConstants + if (static::STATEMENT_END_OPTIONS !== []) { + // phpcs:ignore SlevomatCodingStandard.Classes.DisallowLateStaticBindingForConstants + array_push($clauses, ...array_keys(static::STATEMENT_END_OPTIONS)); + } + } else { + $clauses[] = $key; + } + } + + return array_flip($clauses); } /** * Builds the string representation of this statement. * * @see static::build - * - * @return string */ - public function __toString() + public function __toString(): string { return $this->build(); } @@ -472,13 +408,13 @@ public function __toString() * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed * - * @return bool + * @throws ParserException */ - public function validateClauseOrder($parser, $list) + public function validateClauseOrder(Parser $parser, TokensList $list): bool { $clauses = array_flip(array_keys($this->getClauses())); - if (empty($clauses) || count($clauses) === 0) { + if ($clauses === []) { return true; } @@ -488,8 +424,6 @@ public function validateClauseOrder($parser, $list) * For tracking JOIN clauses in a query * = 0 - JOIN not found till now * > 0 - Index of first JOIN clause in the statement. - * - * @var int */ $minJoin = 0; @@ -499,22 +433,17 @@ public function validateClauseOrder($parser, $list) * > 0 - Index of last JOIN clause * (which appears together with other JOINs) * in the statement. - * - * @var int */ $maxJoin = 0; $error = 0; $lastIdx = 0; - foreach ($clauses as $clauseType => $index) { - $clauseStartIdx = Utils\Query::getClauseStartOffset( - $this, - $list, - $clauseType - ); - - if ($clauseStartIdx !== -1 - && $this instanceof Statements\SelectStatement + foreach (array_keys($clauses) as $clauseType) { + $clauseStartIdx = Query::getClauseStartOffset($this, $list, $clauseType); + + if ( + $clauseStartIdx !== -1 + && $this instanceof SelectStatement && ($clauseType === 'FORCE' || $clauseType === 'IGNORE' || $clauseType === 'USE') @@ -526,13 +455,14 @@ public function validateClauseOrder($parser, $list) // Handle ordering of Multiple Joins in a query if ($clauseStartIdx !== -1) { - if ($minJoin === 0 && stripos($clauseType, 'JOIN')) { + $containsJoinClause = str_contains(strtoupper($clauseType), 'JOIN'); + if ($minJoin === 0 && $containsJoinClause) { // First JOIN clause is detected $minJoin = $maxJoin = $clauseStartIdx; - } elseif ($minJoin !== 0 && ! stripos($clauseType, 'JOIN')) { + } elseif ($minJoin !== 0 && ! $containsJoinClause) { // After a previous JOIN clause, a non-JOIN clause has been detected $maxJoin = $lastIdx; - } elseif ($maxJoin < $clauseStartIdx && stripos($clauseType, 'JOIN')) { + } elseif ($maxJoin < $clauseStartIdx && $containsJoinClause) { $error = 1; } } @@ -540,19 +470,17 @@ public function validateClauseOrder($parser, $list) if ($clauseStartIdx !== -1 && $clauseStartIdx < $minIdx) { if ($minJoin === 0 || $error === 1) { $token = $list->tokens[$clauseStartIdx]; - $parser->error( - 'Unexpected ordering of clauses.', - $token - ); + $parser->error('Unexpected ordering of clauses.', $token); return false; } + $minIdx = $clauseStartIdx; } elseif ($clauseStartIdx !== -1) { $minIdx = $clauseStartIdx; } - $lastIdx = ($clauseStartIdx !== -1) ? $clauseStartIdx : $lastIdx; + $lastIdx = $clauseStartIdx !== -1 ? $clauseStartIdx : $lastIdx; } return true; diff --git a/src/Statements/AlterStatement.php b/src/Statements/AlterStatement.php index 062093684..40cda95f3 100644 --- a/src/Statements/AlterStatement.php +++ b/src/Statements/AlterStatement.php @@ -1,52 +1,54 @@ > + * @psalm-var array 1, 'OFFLINE' => 1, 'IGNORE' => 2, - + // `DEFINER` is also used for `ALTER EVENT` + 'DEFINER' => [ + 2, + 'expr=', + ], 'DATABASE' => 3, 'EVENT' => 3, 'FUNCTION' => 3, @@ -54,6 +56,7 @@ class AlterStatement extends Statement 'SERVER' => 3, 'TABLE' => 3, 'TABLESPACE' => 3, + 'USER' => 3, 'VIEW' => 3, ]; @@ -61,24 +64,27 @@ class AlterStatement extends Statement * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { ++$list->idx; // Skipping `ALTER`. - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); + $parsedOptions = OptionsArrays::parse($parser, $list, static::$statementOptions); + if ($parsedOptions->isEmpty()) { + $parser->error('Unrecognized alter operation.', $list->tokens[$list->idx]); + + return; + } + + $this->options = $parsedOptions; ++$list->idx; // Parsing affected table. - $this->table = Expression::parse( + $this->table = Expressions::parse( $parser, $list, [ 'parseField' => 'table', 'breakOnAlias' => true, - ] + ], ); ++$list->idx; // Skipping field. @@ -90,61 +96,62 @@ public function parse(Parser $parser, TokensList $list) * 0 -----------------[ alter operation ]-----------------> 1 * * 1 -------------------------[ , ]-----------------------> 0 - * - * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { continue; } if ($state === 0) { $options = []; if ($this->options->has('DATABASE')) { - $options = AlterOperation::$DB_OPTIONS; + $options = AlterOperations::DATABASE_OPTIONS; } elseif ($this->options->has('TABLE')) { - $options = AlterOperation::$TABLE_OPTIONS; + $options = AlterOperations::TABLE_OPTIONS; } elseif ($this->options->has('VIEW')) { - $options = AlterOperation::$VIEW_OPTIONS; + $options = AlterOperations::VIEW_OPTIONS; + } elseif ($this->options->has('USER')) { + $options = AlterOperations::USER_OPTIONS; + } elseif ($this->options->has('EVENT')) { + $options = AlterOperations::EVENT_OPTIONS; + } elseif ($this->options->has('FUNCTION') || $this->options->has('PROCEDURE')) { + $options = AlterOperations::ROUTINE_OPTIONS; } - $this->altered[] = AlterOperation::parse($parser, $list, $options); + $this->altered[] = AlterOperations::parse($parser, $list, $options); $state = 1; } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { + if (($token->type === TokenType::Operator) && ($token->value === ',')) { $state = 0; } } } } - /** - * @return string - */ - public function build() + public function build(): string { $tmp = []; foreach ($this->altered as $altered) { - $tmp[] = $altered::build($altered); + $tmp[] = $altered->build(); } - return 'ALTER ' . OptionsArray::build($this->options) - . ' ' . Expression::build($this->table) - . ' ' . implode(', ', $tmp); + return trim( + 'ALTER ' . $this->options->build() + . ' ' . $this->table->build() + . ' ' . implode(', ', $tmp), + ); } } diff --git a/src/Statements/AnalyzeStatement.php b/src/Statements/AnalyzeStatement.php index ebc7f7079..b32fdde52 100644 --- a/src/Statements/AnalyzeStatement.php +++ b/src/Statements/AnalyzeStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'NO_WRITE_TO_BINLOG' => 2, @@ -36,7 +31,7 @@ class AnalyzeStatement extends Statement /** * Analyzed tables. * - * @var Expression[] + * @var Expression[]|null */ - public $tables; + public array|null $tables = null; } diff --git a/src/Statements/BackupStatement.php b/src/Statements/BackupStatement.php index 574dc9a80..f0e1fb439 100644 --- a/src/Statements/BackupStatement.php +++ b/src/Statements/BackupStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'NO_WRITE_TO_BINLOG' => 2, diff --git a/src/Statements/CallStatement.php b/src/Statements/CallStatement.php index 570d3a8bb..f39c52cb8 100644 --- a/src/Statements/CallStatement.php +++ b/src/Statements/CallStatement.php @@ -1,7 +1,5 @@ call->name . "(" . ($this->call->parameters ? implode(",", $this->call->parameters->raw) : "") . ")"; + return 'CALL ' . $this->call->name . '(' + . ($this->call->parameters ? implode(',', $this->call->parameters->raw) : '') . ')'; } } diff --git a/src/Statements/CheckStatement.php b/src/Statements/CheckStatement.php index 789679f5b..47a805c50 100644 --- a/src/Statements/CheckStatement.php +++ b/src/Statements/CheckStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'FOR UPGRADE' => 2, diff --git a/src/Statements/ChecksumStatement.php b/src/Statements/ChecksumStatement.php index 32147488d..4b662e1a6 100644 --- a/src/Statements/ChecksumStatement.php +++ b/src/Statements/ChecksumStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'QUICK' => 2, diff --git a/src/Statements/CreateStatement.php b/src/Statements/CreateStatement.php index ffa08bc0c..7b2b65a52 100644 --- a/src/Statements/CreateStatement.php +++ b/src/Statements/CreateStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, @@ -47,6 +55,7 @@ class CreateStatement extends Statement 4, 'expr=', ], + // Used in `CREATE VIEW` 'SQL SECURITY' => [ 5, 'var', @@ -66,6 +75,7 @@ class CreateStatement extends Statement 'TRIGGER' => 6, 'USER' => 6, 'VIEW' => 6, + 'SCHEMA' => 6, // CREATE TABLE 'IF NOT EXISTS' => 7, @@ -73,10 +83,8 @@ class CreateStatement extends Statement /** * All database options. - * - * @var array */ - public static $DB_OPTIONS = [ + private const DATABASE_OPTIONS = [ 'CHARACTER SET' => [ 1, 'var=', @@ -105,10 +113,8 @@ class CreateStatement extends Statement /** * All table options. - * - * @var array */ - public static $TABLE_OPTIONS = [ + private const TABLE_OPTIONS = [ 'ENGINE' => [ 1, 'var=', @@ -209,37 +215,57 @@ class CreateStatement extends Statement 21, 'var', ], + 'PAGE_COMPRESSED' => [ + 22, + 'var', + ], + 'PAGE_COMPRESSION_LEVEL' => [ + 23, + 'var', + ], ]; /** * All function options. - * - * @var array */ - public static $FUNC_OPTIONS = [ - 'COMMENT' => [ - 1, + private const FUNCTION_OPTIONS = [ + 'NOT' => [ + 2, + 'var', + ], + 'FUNCTION' => [ + 3, + 'var=', + ], + 'PROCEDURE' => [ + 3, 'var=', ], - 'LANGUAGE SQL' => 2, - 'DETERMINISTIC' => 3, - 'NOT DETERMINISTIC' => 3, 'CONTAINS SQL' => 4, 'NO SQL' => 4, 'READS SQL DATA' => 4, 'MODIFIES SQL DATA' => 4, - 'SQL SECURITY DEFINER' => [ - 5, + 'SQL SECURITY' => [ + 6, + 'var', + ], + 'LANGUAGE' => [ + 7, 'var', ], + 'COMMENT' => [ + 8, + 'var', + ], + + 'CREATE' => 1, + 'DETERMINISTIC' => 2, ]; /** * All trigger options. - * - * @var array */ - public static $TRIGGER_OPTIONS = [ + private const TRIGGER_OPTIONS = [ 'BEFORE' => 1, 'AFTER' => 1, 'INSERT' => 2, @@ -251,23 +277,19 @@ class CreateStatement extends Statement * The name of the entity that is created. * * Used by all `CREATE` statements. - * - * @var Expression */ - public $name; + public Expression|null $name = null; /** * The options of the entity (table, procedure, function, etc.). * * Used by `CREATE TABLE`, `CREATE FUNCTION` and `CREATE PROCEDURE`. * - * @var OptionsArray - * - * @see static::$TABLE_OPTIONS - * @see static::$FUNC_OPTIONS - * @see static::$TRIGGER_OPTIONS + * @see CreateStatement::TABLE_OPTIONS + * @see CreateStatement::FUNCTION_OPTIONS + * @see CreateStatement::TRIGGER_OPTIONS */ - public $entityOptions; + public OptionsArray|null $entityOptions = null; /** * If `CREATE TABLE`, a list of columns and keys. @@ -275,288 +297,298 @@ class CreateStatement extends Statement * * Used by `CREATE TABLE` and `CREATE VIEW`. * - * @var CreateDefinition[]|ArrayObj + * @var CreateDefinition[]|ArrayObj|null */ - public $fields; + public array|ArrayObj|null $fields = null; /** - * If `CREATE TABLE ... SELECT`. + * If `CREATE TABLE WITH`. + * If `CREATE TABLE AS WITH`. + * If `CREATE VIEW AS WITH`. * - * Used by `CREATE TABLE` + * Used by `CREATE TABLE`, `CREATE VIEW` + */ + public WithStatement|null $with = null; + + /** + * If `CREATE TABLE ... SELECT`. + * If `CREATE VIEW AS ` ... SELECT`. * - * @var SelectStatement + * Used by `CREATE TABLE`, `CREATE VIEW` */ - public $select; + public SelectStatement|null $select = null; /** * If `CREATE TABLE ... LIKE`. * * Used by `CREATE TABLE` - * - * @var Expression */ - public $like; + public Expression|null $like = null; /** * Expression used for partitioning. - * - * @var string */ - public $partitionBy; + public string|null $partitionBy = null; /** * The number of partitions. - * - * @var int */ - public $partitionsNum; + public int|null $partitionsNum = null; /** * Expression used for subpartitioning. - * - * @var string */ - public $subpartitionBy; + public string|null $subpartitionBy = null; /** * The number of subpartitions. - * - * @var int */ - public $subpartitionsNum; + public int|null $subpartitionsNum = null; /** * The partition of the new table. * - * @var PartitionDefinition[] + * @var PartitionDefinition[]|null */ - public $partitions; + public array|null $partitions = null; /** * If `CREATE TRIGGER` the name of the table. * * Used by `CREATE TRIGGER`. - * - * @var Expression */ - public $table; + public Expression|null $table = null; /** * The return data type of this routine. * * Used by `CREATE FUNCTION`. - * - * @var DataType */ - public $return; + public DataType|null $return = null; /** * The parameters of this routine. * * Used by `CREATE FUNCTION` and `CREATE PROCEDURE`. * - * @var ParameterDefinition[] + * @var ParameterDefinition[]|null */ - public $parameters; + public array|null $parameters = null; /** - * The body of this function or procedure. For views, it is the select - * statement that gets the. - * + * The body of this function or procedure. + * For views, it is the select statement that creates the view. * Used by `CREATE FUNCTION`, `CREATE PROCEDURE` and `CREATE VIEW`. * - * @var Token[]|string + * @var Token[] */ - public $body = []; + public array $body = []; - /** - * @return string - */ - public function build() + public function build(): string { $fields = ''; - if (! empty($this->fields)) { + if ($this->fields !== null && $this->fields !== []) { if (is_array($this->fields)) { - $fields = CreateDefinition::build($this->fields) . ' '; - } elseif ($this->fields instanceof ArrayObj) { - $fields = ArrayObj::build($this->fields); + $fields = CreateDefinitions::buildAll($this->fields) . ' '; + } else { + $fields = $this->fields->build(); } } - if ($this->options->has('DATABASE')) { + + if ($this->options->has('DATABASE') || $this->options->has('SCHEMA')) { return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . OptionsArray::build($this->entityOptions); - } elseif ($this->options->has('TABLE')) { - if (! is_null($this->select)) { + . $this->options->build() . ' ' + . $this->name->build() . ' ' + . $this->entityOptions->build(); + } + + if ($this->options->has('TABLE')) { + if ($this->select !== null) { return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' + . $this->options->build() . ' ' + . $this->name->build() . ' ' . $this->select->build(); - } elseif (! is_null($this->like)) { - return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' LIKE ' - . Expression::build($this->like); - } else { - $partition = ''; + } - if (! empty($this->partitionBy)) { - $partition .= "\nPARTITION BY " . $this->partitionBy; - } - if (! empty($this->partitionsNum)) { - $partition .= "\nPARTITIONS " . $this->partitionsNum; - } - if (! empty($this->subpartitionBy)) { - $partition .= "\nSUBPARTITION BY " . $this->subpartitionBy; - } - if (! empty($this->subpartitionsNum)) { - $partition .= "\nSUBPARTITIONS " . $this->subpartitionsNum; - } - if (! empty($this->partitions)) { - $partition .= "\n" . PartitionDefinition::build($this->partitions); - } + if ($this->like !== null) { + return 'CREATE ' + . $this->options->build() . ' ' + . $this->name->build() . ' LIKE ' + . $this->like->build(); + } + if ($this->with !== null) { return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . $fields - . OptionsArray::build($this->entityOptions) - . $partition; + . $this->options->build() . ' ' + . $this->name->build() . ' ' + . $this->with->build(); } - } elseif ($this->options->has('VIEW')) { + + $partition = ''; + + if (! empty($this->partitionBy)) { + $partition .= "\nPARTITION BY " . $this->partitionBy; + } + + if (! empty($this->partitionsNum)) { + $partition .= "\nPARTITIONS " . $this->partitionsNum; + } + + if (! empty($this->subpartitionBy)) { + $partition .= "\nSUBPARTITION BY " . $this->subpartitionBy; + } + + if (! empty($this->subpartitionsNum)) { + $partition .= "\nSUBPARTITIONS " . $this->subpartitionsNum; + } + + if (! empty($this->partitions)) { + $partition .= "\n" . PartitionDefinitions::buildAll($this->partitions); + } + return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . $fields . ' AS ' . TokensList::build($this->body) . ' ' - . OptionsArray::build($this->entityOptions); - } elseif ($this->options->has('TRIGGER')) { + . $this->options->build() . ' ' + . $this->name->build() . ' ' + . $fields + . ($this->entityOptions?->build() ?? '') + . $partition; + } + + if ($this->options->has('VIEW')) { + $builtStatement = ''; + if ($this->select !== null) { + $builtStatement = $this->select->build(); + } elseif ($this->with !== null) { + $builtStatement = $this->with->build(); + } + return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . OptionsArray::build($this->entityOptions) . ' ' - . 'ON ' . Expression::build($this->table) . ' ' - . 'FOR EACH ROW ' . TokensList::build($this->body); - } elseif ($this->options->has('PROCEDURE') - || $this->options->has('FUNCTION') - ) { + . $this->options->build() . ' ' + . $this->name->build() . ' ' + . $fields . ' AS ' . $builtStatement + . TokensList::buildFromArray($this->body) . ' ' + . ($this->entityOptions?->build() ?? ''); + } + + if ($this->options->has('TRIGGER')) { + return 'CREATE ' + . $this->options->build() . ' ' + . $this->name->build() . ' ' + . $this->entityOptions->build() . ' ' + . 'ON ' . $this->table->build() . ' ' + . 'FOR EACH ROW ' . TokensList::buildFromArray($this->body); + } + + if ($this->options->has('PROCEDURE') || $this->options->has('FUNCTION')) { $tmp = ''; if ($this->options->has('FUNCTION')) { - $tmp = 'RETURNS ' . DataType::build($this->return); + $tmp = 'RETURNS ' . $this->return->build(); } return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . ParameterDefinition::build($this->parameters) . ' ' - . $tmp . ' ' . TokensList::build($this->body); + . $this->options->build() . ' ' + . $this->name->build() . ' ' + . ParameterDefinitions::buildAll($this->parameters) . ' ' + . $tmp . ' ' . $this->entityOptions->build() . ' ' + . TokensList::buildFromArray($this->body); } return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . TokensList::build($this->body); + . $this->options->build() . ' ' + . $this->name->build() . ' ' + . TokensList::buildFromArray($this->body); } /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { ++$list->idx; // Skipping `CREATE`. // Parsing options. - $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); ++$list->idx; // Skipping last option. + $isDatabase = $this->options->has('DATABASE') || $this->options->has('SCHEMA'); + $fieldName = $isDatabase ? 'database' : 'table'; + // Parsing the field name. - $this->name = Expression::parse( + $this->name = Expressions::parse( $parser, $list, [ - 'parseField' => 'table', + 'parseField' => $fieldName, 'breakOnAlias' => true, - ] + ], ); - if (! isset($this->name) || ($this->name === '')) { - $parser->error( - 'The name of the entity was expected.', - $list->tokens[$list->idx] - ); + if ($this->name === null) { + $parser->error('The name of the entity was expected.', $list->tokens[$list->idx]); } else { ++$list->idx; // Skipping field. } /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; $nextidx = $list->idx + 1; - while ($nextidx < $list->count && $list->tokens[$nextidx]->type === Token::TYPE_WHITESPACE) { + while ($nextidx < $list->count && $list->tokens[$nextidx]->type === TokenType::Whitespace) { ++$nextidx; } - if ($this->options->has('DATABASE')) { - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$DB_OPTIONS - ); + if ($isDatabase) { + $this->entityOptions = OptionsArrays::parse($parser, $list, self::DATABASE_OPTIONS); } elseif ($this->options->has('TABLE')) { - if (($token->type === Token::TYPE_KEYWORD) - && ($token->keyword === 'SELECT')) { + if (($token->type === TokenType::Keyword) && ($token->keyword === 'SELECT')) { /* CREATE TABLE ... SELECT */ $this->select = new SelectStatement($parser, $list); - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'AS') - && ($list->tokens[$nextidx]->type === Token::TYPE_KEYWORD) - && ($list->tokens[$nextidx]->value === 'SELECT')) { - /* CREATE TABLE ... AS SELECT */ - $list->idx = $nextidx; - $this->select = new SelectStatement($parser, $list); - } elseif ($token->type === Token::TYPE_KEYWORD - && $token->keyword === 'LIKE') { + } elseif ($token->type === TokenType::Keyword && ($token->keyword === 'WITH')) { + /* CREATE TABLE WITH */ + $this->with = new WithStatement($parser, $list); + } elseif ( + ($token->type === TokenType::Keyword) && ($token->keyword === 'AS') + && ($list->tokens[$nextidx]->type === TokenType::Keyword) + ) { + if ($list->tokens[$nextidx]->value === 'SELECT') { + /* CREATE TABLE ... AS SELECT */ + $list->idx = $nextidx; + $this->select = new SelectStatement($parser, $list); + } elseif ($list->tokens[$nextidx]->value === 'WITH') { + /* CREATE TABLE WITH */ + $list->idx = $nextidx; + $this->with = new WithStatement($parser, $list); + } + } elseif ($token->type === TokenType::Keyword && $token->keyword === 'LIKE') { /* CREATE TABLE `new_tbl` LIKE 'orig_tbl' */ $list->idx = $nextidx; - $this->like = Expression::parse( + $this->like = Expressions::parse( $parser, $list, [ 'parseField' => 'table', 'breakOnAlias' => true, - ] + ], ); // The 'LIKE' keyword was found, but no table_name was found next to it - if (is_null($this->like)) { - $parser->error( - 'A table name was expected.', - $list->tokens[$list->idx] - ); + if ($this->like === null) { + $parser->error('A table name was expected.', $list->tokens[$list->idx]); } } else { - $this->fields = CreateDefinition::parse($parser, $list); - if (empty($this->fields)) { - $parser->error( - 'At least one column definition was expected.', - $list->tokens[$list->idx] - ); + $this->fields = CreateDefinitions::parse($parser, $list); + if ($this->fields === []) { + $parser->error('At least one column definition was expected.', $list->tokens[$list->idx]); } + ++$list->idx; - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$TABLE_OPTIONS - ); + $this->entityOptions = OptionsArrays::parse($parser, $list, self::TABLE_OPTIONS); /** * The field that is being filled (`partitionBy` or * `subpartitionBy`). - * - * @var string */ $field = null; @@ -564,8 +596,6 @@ public function parse(Parser $parser, TokensList $list) * The number of brackets. `false` means no bracket was found * previously. At least one bracket is required to validate the * expression. - * - * @var int|bool */ $brackets = false; @@ -575,33 +605,31 @@ public function parse(Parser $parser, TokensList $list) for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping comments. - if ($token->type === Token::TYPE_COMMENT) { + if ($token->type === TokenType::Comment) { continue; } - if (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'PARTITION BY')) { + if (($token->type === TokenType::Keyword) && ($token->keyword === 'PARTITION BY')) { $field = 'partitionBy'; $brackets = false; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITION BY')) { + } elseif (($token->type === TokenType::Keyword) && ($token->keyword === 'SUBPARTITION BY')) { $field = 'subpartitionBy'; $brackets = false; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'PARTITIONS')) { - $token = $list->getNextOfType(Token::TYPE_NUMBER); + } elseif (($token->type === TokenType::Keyword) && ($token->keyword === 'PARTITIONS')) { + $token = $list->getNextOfType(TokenType::Number); --$list->idx; // `getNextOfType` also advances one position. $this->partitionsNum = $token->value; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITIONS')) { - $token = $list->getNextOfType(Token::TYPE_NUMBER); + } elseif (($token->type === TokenType::Keyword) && ($token->keyword === 'SUBPARTITIONS')) { + $token = $list->getNextOfType(TokenType::Number); --$list->idx; // `getNextOfType` also advances one position. $this->subpartitionsNum = $token->value; } elseif (! empty($field)) { @@ -610,19 +638,19 @@ public function parse(Parser $parser, TokensList $list) */ // Counting brackets. - if ($token->type === Token::TYPE_OPERATOR) { + if ($token->type === TokenType::Operator) { if ($token->value === '(') { // This is used instead of `++$brackets` because, // initially, `$brackets` is `false` cannot be // incremented. - $brackets = $brackets + 1; + $brackets += 1; } elseif ($token->value === ')') { --$brackets; } } // Building the expression used for partitioning. - $this->$field .= ($token->type === Token::TYPE_WHITESPACE) ? ' ' : $token->token; + $this->$field .= $token->type === TokenType::Whitespace ? ' ' : $token->token; // Last bracket was read, the expression ended. // Comparing with `0` and not `false`, because `false` means @@ -632,110 +660,172 @@ public function parse(Parser $parser, TokensList $list) $this->$field = trim($this->$field); $field = null; } - } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + } elseif (($token->type === TokenType::Operator) && ($token->value === '(')) { if (! empty($this->partitionBy)) { - $this->partitions = ArrayObj::parse( + $this->partitions = ArrayObjs::parse( $parser, $list, - [ - 'type' => 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition', - ] + ['type' => PartitionDefinitions::class], ); } + break; } } } - } elseif ($this->options->has('PROCEDURE') - || $this->options->has('FUNCTION') - ) { - $this->parameters = ParameterDefinition::parse($parser, $list); + } elseif ($this->options->has('PROCEDURE') || $this->options->has('FUNCTION')) { + $this->parameters = ParameterDefinitions::parse($parser, $list); if ($this->options->has('FUNCTION')) { - $prev_token = $token; - $token = $list->getNextOfType(Token::TYPE_KEYWORD); - if (is_null($token) || $token->keyword !== 'RETURNS') { - $parser->error( - 'A "RETURNS" keyword was expected.', - is_null($token) ? $prev_token : $token - ); + $prevToken = $token; + $token = $list->getNextOfType(TokenType::Keyword); + if ($token === null || $token->keyword !== 'RETURNS') { + $parser->error('A "RETURNS" keyword was expected.', $token ?? $prevToken); } else { ++$list->idx; - $this->return = DataType::parse( - $parser, - $list - ); + $this->return = DataTypes::parse($parser, $list); } } + ++$list->idx; - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$FUNC_OPTIONS - ); + $this->entityOptions = OptionsArrays::parse($parser, $list, self::FUNCTION_OPTIONS); ++$list->idx; for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; + if ($token->type === TokenType::Delimiter) { + break; + } + $this->body[] = $token; } } elseif ($this->options->has('VIEW')) { + /** @var Token $token */ $token = $list->getNext(); // Skipping whitespaces and comments. // Parsing columns list. - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + if (($token->type === TokenType::Operator) && ($token->value === '(')) { --$list->idx; // getNext() also goes forward one field. - $this->fields = ArrayObj::parse($parser, $list); + $this->fields = ArrayObjs::parse($parser, $list); ++$list->idx; // Skipping last token from the array. $list->getNext(); } - // Parsing the `AS` keyword. + // Parsing the SELECT expression if the view started with it. + if ( + $token->type === TokenType::Keyword + && $token->keyword === 'AS' + && $list->tokens[$nextidx]->type === TokenType::Keyword + ) { + if ($list->tokens[$nextidx]->value === 'SELECT') { + $list->idx = $nextidx; + $this->select = new SelectStatement($parser, $list); + ++$list->idx; // Skipping last token from the select. + } elseif ($list->tokens[$nextidx]->value === 'WITH') { + ++$list->idx; + $this->with = new WithStatement($parser, $list); + } + } + + // Parsing all other tokens for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } + $this->body[] = $token; } } elseif ($this->options->has('TRIGGER')) { // Parsing the time and the event. - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$TRIGGER_OPTIONS - ); + $this->entityOptions = OptionsArrays::parse($parser, $list, self::TRIGGER_OPTIONS); ++$list->idx; - $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'ON'); + $list->getNextOfTypeAndValue(TokenType::Keyword, 'ON'); ++$list->idx; // Skipping `ON`. // Parsing the name of the table. - $this->table = Expression::parse( + $this->table = Expressions::parse( $parser, $list, [ 'parseField' => 'table', 'breakOnAlias' => true, - ] + ], ); ++$list->idx; - $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'FOR EACH ROW'); + $list->getNextOfTypeAndValue(TokenType::Keyword, 'FOR EACH ROW'); ++$list->idx; // Skipping `FOR EACH ROW`. for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; + if ($token->type === TokenType::Delimiter) { + break; + } + $this->body[] = $token; } } else { for (; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } + $this->body[] = $token; } } } + + /** @return list */ + public function getForeignKeys(): array + { + if (empty($this->fields) || ! is_array($this->fields) || ! $this->options->has('TABLE')) { + return []; + } + + $ret = []; + + foreach ($this->fields as $field) { + if ($field->key === null || $field->key->type !== 'FOREIGN KEY') { + continue; + } + + $columns = []; + foreach ($field->key->columns as $column) { + if (! isset($column['name'])) { + continue; + } + + $columns[] = $column['name']; + } + + $foreignKey = new ForeignKey(); + $foreignKey->constraint = $field->name; + $foreignKey->indexList = $columns; + + if ($field->references !== null) { + $foreignKey->refDbName = $field->references->table->database; + $foreignKey->refTableName = $field->references->table->table; + $foreignKey->refIndexList = $field->references->columns; + + $opt = $field->references->options->get('ON UPDATE'); + + if ($opt !== '') { + $foreignKey->onUpdate = str_replace(' ', '_', (string) $opt); + } + + $opt = $field->references->options->get('ON DELETE'); + + if ($opt !== '') { + $foreignKey->onDelete = str_replace(' ', '_', (string) $opt); + } + } + + $ret[] = $foreignKey; + } + + return $ret; + } } diff --git a/src/Statements/DeleteStatement.php b/src/Statements/DeleteStatement.php index b55d5f4f0..697082ae9 100644 --- a/src/Statements/DeleteStatement.php +++ b/src/Statements/DeleteStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'QUICK' => 2, 'IGNORE' => 3, @@ -63,129 +65,128 @@ class DeleteStatement extends Statement /** * The clauses of this statement, in order. * - * @see Statement::$CLAUSES + * @see Statement::$clauses * - * @var array + * @var array}> */ - public static $CLAUSES = [ + public static array $clauses = [ 'DELETE' => [ 'DELETE', - 2, + Statement::ADD_KEYWORD, ], // Used for options. '_OPTIONS' => [ '_OPTIONS', - 1, + Statement::ADD_CLAUSE, ], 'FROM' => [ 'FROM', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'PARTITION' => [ 'PARTITION', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'USING' => [ 'USING', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'WHERE' => [ 'WHERE', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'ORDER BY' => [ 'ORDER BY', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'LIMIT' => [ 'LIMIT', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], ]; /** * Table(s) used as sources for this statement. * - * @var Expression[] + * @var Expression[]|null */ - public $from; + public array|null $from = null; /** * Joins. * - * @var JoinKeyword[] + * @var JoinKeyword[]|null */ - public $join; + public array|null $join = null; /** * Tables used as sources for this statement. * - * @var Expression[] + * @var Expression[]|null */ - public $using; + public array|null $using = null; /** * Columns used in this statement. * - * @var Expression[] + * @var Expression[]|null */ - public $columns; + public array|null $columns = null; /** * Partitions used as source for this statement. - * - * @var ArrayObj */ - public $partition; + public ArrayObj|null $partition = null; /** * Conditions used for filtering each row of the result set. * - * @var Condition[] + * @var Condition[]|null */ - public $where; + public array|null $where = null; /** * Specifies the order of the rows in the result set. * - * @var OrderKeyword[] + * @var OrderKeyword[]|null */ - public $order; + public array|null $order = null; /** * Conditions used for limiting the size of the result set. - * - * @var Limit */ - public $limit; + public Limit|null $limit = null; - /** - * @return string - */ - public function build() + public function build(): string { - $ret = 'DELETE ' . OptionsArray::build($this->options); + $ret = 'DELETE ' . $this->options->build(); - if (! is_null($this->columns) && count($this->columns) > 0) { - $ret .= ' ' . ExpressionArray::build($this->columns); + if ($this->columns !== null && $this->columns !== []) { + $ret .= ' ' . Expressions::buildAll($this->columns); } - if (! is_null($this->from) && count($this->from) > 0) { - $ret .= ' FROM ' . ExpressionArray::build($this->from); + + if ($this->from !== null && $this->from !== []) { + $ret .= ' FROM ' . Expressions::buildAll($this->from); } - if (! is_null($this->join) && count($this->join) > 0) { - $ret .= ' ' . JoinKeyword::build($this->join); + + if ($this->join !== null && $this->join !== []) { + $ret .= ' ' . JoinKeywords::buildAll($this->join); } - if (! is_null($this->using) && count($this->using) > 0) { - $ret .= ' USING ' . ExpressionArray::build($this->using); + + if ($this->using !== null && $this->using !== []) { + $ret .= ' USING ' . Expressions::buildAll($this->using); } - if (! is_null($this->where) && count($this->where) > 0) { - $ret .= ' WHERE ' . Condition::build($this->where); + + if ($this->where !== null && $this->where !== []) { + $ret .= ' WHERE ' . Conditions::buildAll($this->where); } - if (! is_null($this->order) && count($this->order) > 0) { - $ret .= ' ORDER BY ' . ExpressionArray::build($this->order); + + if ($this->order !== null && $this->order !== []) { + $ret .= ' ORDER BY ' . OrderKeywords::buildAll($this->order); } - if (! is_null($this->limit) && strlen((string) $this->limit) > 0) { - $ret .= ' LIMIT ' . Limit::build($this->limit); + + if ($this->limit !== null && strlen((string) $this->limit) > 0) { + $ret .= ' LIMIT ' . $this->limit->build(); } return $ret; @@ -195,16 +196,12 @@ public function build() * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { ++$list->idx; // Skipping `DELETE`. // parse any options if provided - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); ++$list->idx; /** @@ -219,66 +216,60 @@ public function parse(Parser $parser, TokensList $list) * 2 --------------------------------[ WHERE ]----------------------------------> 4 * 2 --------------------------------[ ORDER ]----------------------------------> 5 * 2 --------------------------------[ LIMIT ]----------------------------------> 6 - * - * @var int */ $state = 0; /** * If the query is multi-table or not. - * - * @var bool */ $multiTable = false; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } if ($state === 0) { - if ($token->type === Token::TYPE_KEYWORD) { + if ($token->type === TokenType::Keyword) { if ($token->keyword !== 'FROM') { $parser->error('Unexpected keyword.', $token); break; - } else { - ++$list->idx; // Skip 'FROM' - $this->from = ExpressionArray::parse($parser, $list); - - $state = 2; } + + ++$list->idx; // Skip 'FROM' + $this->from = ExpressionArray::parse($parser, $list); + + $state = 2; } else { $this->columns = ExpressionArray::parse($parser, $list); $state = 1; } } elseif ($state === 1) { - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword !== 'FROM') { - $parser->error('Unexpected keyword.', $token); - break; - } else { - ++$list->idx; // Skip 'FROM' - $this->from = ExpressionArray::parse($parser, $list); - - $state = 2; - } - } else { + if ($token->type !== TokenType::Keyword) { $parser->error('Unexpected token.', $token); break; } + + if ($token->keyword !== 'FROM') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; // Skip 'FROM' + $this->from = ExpressionArray::parse($parser, $list); + + $state = 2; } elseif ($state === 2) { - if ($token->type === Token::TYPE_KEYWORD) { + if ($token->type === TokenType::Keyword) { if (stripos($token->keyword, 'JOIN') !== false) { ++$list->idx; - $this->join = JoinKeyword::parse($parser, $list); + $this->join = JoinKeywords::parse($parser, $list); // remain in state = 2 } else { @@ -292,17 +283,17 @@ public function parse(Parser $parser, TokensList $list) break; case 'WHERE': ++$list->idx; // Skip 'WHERE' - $this->where = Condition::parse($parser, $list); + $this->where = Conditions::parse($parser, $list); $state = 4; break; case 'ORDER BY': ++$list->idx; // Skip 'ORDER BY' - $this->order = OrderKeyword::parse($parser, $list); + $this->order = OrderKeywords::parse($parser, $list); $state = 5; break; case 'LIMIT': ++$list->idx; // Skip 'LIMIT' - $this->limit = Limit::parse($parser, $list); + $this->limit = Limits::parse($parser, $list); $state = 6; break; default: @@ -312,40 +303,35 @@ public function parse(Parser $parser, TokensList $list) } } } elseif ($state === 3) { - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'WHERE') { - ++$list->idx; // Skip 'WHERE' - $this->where = Condition::parse($parser, $list); - $state = 4; - } else { - $parser->error('Unexpected keyword.', $token); - break; - } - } else { + if ($token->type !== TokenType::Keyword) { $parser->error('Unexpected token.', $token); break; } + + if ($token->keyword !== 'WHERE') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; // Skip 'WHERE' + $this->where = Conditions::parse($parser, $list); + $state = 4; } elseif ($state === 4) { - if ($multiTable === true - && $token->type === Token::TYPE_KEYWORD - ) { - $parser->error( - 'This type of clause is not valid in Multi-table queries.', - $token - ); + if ($multiTable === true && $token->type === TokenType::Keyword) { + $parser->error('This type of clause is not valid in Multi-table queries.', $token); break; } - if ($token->type === Token::TYPE_KEYWORD) { + if ($token->type === TokenType::Keyword) { switch ($token->keyword) { case 'ORDER BY': ++$list->idx; // Skip 'ORDER BY' - $this->order = OrderKeyword::parse($parser, $list); + $this->order = OrderKeywords::parse($parser, $list); $state = 5; break; case 'LIMIT': ++$list->idx; // Skip 'LIMIT' - $this->limit = Limit::parse($parser, $list); + $this->limit = Limits::parse($parser, $list); $state = 6; break; default: @@ -354,24 +340,24 @@ public function parse(Parser $parser, TokensList $list) } } } elseif ($state === 5) { - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'LIMIT') { - ++$list->idx; // Skip 'LIMIT' - $this->limit = Limit::parse($parser, $list); - $state = 6; - } else { + if ($token->type === TokenType::Keyword) { + if ($token->keyword !== 'LIMIT') { $parser->error('Unexpected keyword.', $token); break; } + + ++$list->idx; // Skip 'LIMIT' + $this->limit = Limits::parse($parser, $list); + $state = 6; } } } if ($state >= 2) { - foreach ($this->from as $from_expr) { - $from_expr->database = $from_expr->table; - $from_expr->table = $from_expr->column; - $from_expr->column = null; + foreach ($this->from as $fromExpr) { + $fromExpr->database = $fromExpr->table; + $fromExpr->table = $fromExpr->column; + $fromExpr->column = null; } } diff --git a/src/Statements/DropStatement.php b/src/Statements/DropStatement.php index 453bed199..26b6123f1 100644 --- a/src/Statements/DropStatement.php +++ b/src/Statements/DropStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'EVENT' => 1, 'FUNCTION' => 1, @@ -36,6 +31,7 @@ class DropStatement extends Statement 'VIEW' => 1, 'TABLESPACE' => 1, 'TRIGGER' => 1, + 'USER' => 1, 'TEMPORARY' => 2, 'IF EXISTS' => 3, @@ -44,42 +40,40 @@ class DropStatement extends Statement /** * The clauses of this statement, in order. * - * @see Statement::$CLAUSES + * @see Statement::$clauses * - * @var array + * @var array}> */ - public static $CLAUSES = [ + public static array $clauses = [ 'DROP' => [ 'DROP', - 2, + Statement::ADD_KEYWORD, ], // Used for options. '_OPTIONS' => [ '_OPTIONS', - 1, + Statement::ADD_CLAUSE, ], // Used for select expressions. 'DROP_' => [ 'DROP', - 1, + Statement::ADD_CLAUSE, ], 'ON' => [ 'ON', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], ]; /** * Dropped elements. * - * @var Expression[] + * @var Expression[]|null */ - public $fields; + public array|null $fields = null; /** * Table of the dropped index. - * - * @var Expression */ - public $table; + public Expression|null $table = null; } diff --git a/src/Statements/ExplainStatement.php b/src/Statements/ExplainStatement.php index 65ea597cf..7976b456f 100644 --- a/src/Statements/ExplainStatement.php +++ b/src/Statements/ExplainStatement.php @@ -1,18 +1,268 @@ 1, + 'PARTITIONS' => 1, + 'FORMAT' => [ + 1, + 'var', + ], + ]; + + /** + * The parser of the statement to be explained + */ + public Parser|null $bodyParser = null; + + /** + * The statement alias, could be any of the following: + * - {EXPLAIN | DESCRIBE | DESC} + * - {EXPLAIN | DESCRIBE | DESC} ANALYZE + * - ANALYZE + */ + public string $statementAlias; + + /** + * The connection identifier, if used. + */ + public int|null $connectionId = null; + + /** + * The explained database for the table's name, if used. + */ + public string|null $explainedDatabase = null; + + /** + * The explained table's name, if used. + */ + public string|null $explainedTable = null; + + /** + * The explained column's name, if used. + */ + public string|null $explainedColumn = null; + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list): void + { + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -------------------[ EXPLAIN/EXPLAIN ANALYZE/ANALYZE ]-----------------------> 1 + * + * 0 ------------------------[ EXPLAIN/DESC/DESCRIBE ]----------------------------> 3 + * + * 1 ------------------------------[ OPTIONS ]------------------------------------> 2 + * + * 2 --------------[ tablename / STATEMENT / FOR CONNECTION ]---------------------> 2 + * + * 3 -----------------------------[ tablename ]-----------------------------------> 3 + */ + $state = 0; + + /** + * To Differentiate between ANALYZE / EXPLAIN / EXPLAIN ANALYZE + * 0 -> ANALYZE ( used by mariaDB https://mariadb.com/kb/en/analyze-statement) + * 1 -> {EXPLAIN | DESCRIBE | DESC} + * 2 -> {EXPLAIN | DESCRIBE | DESC} ANALYZE + */ + $miniState = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + --$list->idx; // Back up one token, no real reasons to document + break; + } + + // Skipping whitespaces and comments. + if ($token->type === TokenType::Whitespace || $token->type === TokenType::Comment) { + continue; + } + + if ($state === 0) { + if ($token->keyword === 'ANALYZE' && $miniState === 0) { + $state = 1; + $this->statementAlias = 'ANALYZE'; + } elseif ( + $token->keyword === 'EXPLAIN' + || $token->keyword === 'DESC' + || $token->keyword === 'DESCRIBE' + ) { + $this->statementAlias = $token->keyword; + + $lastIdx = $list->idx; + $list->idx++; // Ignore the current token + $nextKeyword = $list->getNextOfType(TokenType::Keyword); + $list->idx = $lastIdx; + + // There is no other keyword, we must be describing a table + if ($nextKeyword === null) { + $state = 3; + continue; + } + + $miniState = 1; + + $lastIdx = $list->idx; + $nextKeyword = $list->getNextOfTypeAndValue(TokenType::Keyword, 'ANALYZE'); + if ($nextKeyword && $nextKeyword->keyword !== null) { + $miniState = 2; + $this->statementAlias .= ' ANALYZE'; + } else { + $list->idx = $lastIdx; + } + + $state = 1; + } + } elseif ($state === 1) { + // Parsing options. + $this->options = OptionsArrays::parse($parser, $list, self::OPTIONS); + $state = 2; + } elseif ($state === 2) { + $currIdx = $list->idx; + $list->idx++; // Ignore the current token + $nextToken = $list->getNext(); + $list->idx = $currIdx; + + if ($token->keyword === 'FOR' && $nextToken->keyword === 'CONNECTION') { + $list->idx++; // Ignore the current token + $list->getNext(); // CONNECTION + $nextToken = $list->getNext(); // Identifier + $this->connectionId = $nextToken->value; + break; + } + + if ( + $token->keyword !== 'SELECT' + && $token->keyword !== 'TABLE' + && $token->keyword !== 'INSERT' + && $token->keyword !== 'REPLACE' + && $token->keyword !== 'UPDATE' + && $token->keyword !== 'DELETE' + ) { + $parser->error('Unexpected token.', $token); + break; + } + + // Index of the last parsed token by default would be the last token in the $list, because we're + // assuming that all remaining tokens at state 2, are related to the to-be-explained statement. + $idxOfLastParsedToken = $list->count - 1; + $subList = new TokensList(array_slice($list->tokens, $list->idx)); + + $this->bodyParser = new Parser($subList); + if ($this->bodyParser->errors !== []) { + foreach ($this->bodyParser->errors as $error) { + $parser->errors[] = $error; + } + + break; + } + + $list->idx = $idxOfLastParsedToken; + break; + } elseif ($state === 3) { + if (($token->type === TokenType::Operator) && ($token->value === '.')) { + continue; + } + + if ($this->explainedDatabase === null) { + $lastIdx = $list->idx; + $nextDot = $list->getNextOfTypeAndValue(TokenType::Operator, '.'); + $list->idx = $lastIdx; + if ($nextDot !== null) {// We found a dot, so it must be a db.table name format + $this->explainedDatabase = $token->value; + continue; + } + } + + if ($this->explainedTable === null) { + $this->explainedTable = $token->value; + continue; + } + + if ($this->explainedColumn === null && $token->value !== null) { + $this->explainedColumn = (string) $token->value; + } + } + } + + if ($state !== 3 || $this->explainedTable !== null) { + return; + } + + // We reached end of the state 3 and no table name was found + /** Token parsed at this moment. */ + $token = $list->tokens[$list->idx]; + $parser->error('Expected a table name.', $token); + } + + public function build(): string + { + $str = $this->statementAlias; + + if ($this->options !== null) { + if ($this->options->options !== []) { + $str .= ' '; + } + + $str .= $this->options->build() . ' '; + } + + if ($this->options === null) { + $str .= ' '; + } + + if ($this->bodyParser) { + foreach ($this->bodyParser->statements as $statement) { + $str .= $statement->build(); + } + } elseif ($this->connectionId) { + $str .= 'FOR CONNECTION ' . $this->connectionId; + } + + if ($this->explainedDatabase !== null && $this->explainedTable !== null) { + $str .= Context::escape($this->explainedDatabase) . '.' . Context::escape($this->explainedTable); + } elseif ($this->explainedTable !== null) { + $str .= Context::escape($this->explainedTable); + } + + if ($this->explainedColumn !== null) { + $str .= ' ' . Context::escape($this->explainedColumn); + } + + return $str; + } } diff --git a/src/Statements/InsertStatement.php b/src/Statements/InsertStatement.php index 265929db1..de353fa0f 100644 --- a/src/Statements/InsertStatement.php +++ b/src/Statements/InsertStatement.php @@ -1,20 +1,24 @@ > + * @psalm-var array 1, 'DELAYED' => 2, 'HIGH_PRIORITY' => 3, @@ -69,60 +70,59 @@ class InsertStatement extends Statement /** * Tables used as target for this statement. - * - * @var IntoKeyword */ - public $into; + public IntoKeyword|null $into = null; /** * Values to be inserted. * * @var ArrayObj[]|null */ - public $values; + public array|null $values = null; /** * If SET clause is present * holds the SetOperation. * - * @var SetOperation[] + * @var SetOperation[]|null */ - public $set; + public array|null $set = null; /** * If SELECT clause is present * holds the SelectStatement. - * - * @var SelectStatement */ - public $select; + public SelectStatement|null $select = null; + + /** + * If WITH CTE is present + * holds the WithStatement. + */ + public WithStatement|null $with = null; /** * If ON DUPLICATE KEY UPDATE clause is present * holds the SetOperation. * - * @var SetOperation[] + * @var SetOperation[]|null */ - public $onDuplicateSet; + public array|null $onDuplicateSet = null; - /** - * @return string - */ - public function build() + public function build(): string { $ret = 'INSERT ' . $this->options; $ret = trim($ret) . ' INTO ' . $this->into; - if (! is_null($this->values) && count($this->values) > 0) { - $ret .= ' VALUES ' . Array2d::build($this->values); - } elseif (! is_null($this->set) && count($this->set) > 0) { - $ret .= ' SET ' . SetOperation::build($this->set); - } elseif (! is_null($this->select) && strlen((string) $this->select) > 0) { + if ($this->values !== null && $this->values !== []) { + $ret .= ' VALUES ' . ArrayObjs::buildAll($this->values); + } elseif ($this->set !== null && $this->set !== []) { + $ret .= ' SET ' . SetOperations::buildAll($this->set); + } elseif ($this->select !== null && strlen((string) $this->select) > 0) { $ret .= ' ' . $this->select->build(); } - if (! is_null($this->onDuplicateSet) && count($this->onDuplicateSet) > 0) { - $ret .= ' ON DUPLICATE KEY UPDATE ' . SetOperation::build($this->onDuplicateSet); + if ($this->onDuplicateSet !== null && $this->onDuplicateSet !== []) { + $ret .= ' ON DUPLICATE KEY UPDATE ' . SetOperations::buildAll($this->onDuplicateSet); } return $ret; @@ -132,16 +132,12 @@ public function build() * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { ++$list->idx; // Skipping `INSERT`. // parse any options if provided - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); ++$list->idx; /** @@ -154,8 +150,6 @@ public function parse(Parser $parser, TokensList $list) * 1 -------------------------[ VALUES/VALUE/SET/SELECT ]-----------------------> 2 * * 2 -------------------------[ ON DUPLICATE KEY UPDATE ]-----------------------> 3 - * - * @var int */ $state = 0; @@ -168,67 +162,58 @@ public function parse(Parser $parser, TokensList $list) for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { continue; } if ($state === 0) { - if ($token->type === Token::TYPE_KEYWORD - && $token->keyword !== 'INTO' - ) { + if ($token->type === TokenType::Keyword && $token->keyword !== 'INTO') { $parser->error('Unexpected keyword.', $token); break; } ++$list->idx; - $this->into = IntoKeyword::parse( + $this->into = IntoKeywords::parse( $parser, $list, - ['fromInsert' => true] + ['fromInsert' => true], ); $state = 1; } elseif ($state === 1) { - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'VALUE' - || $token->keyword === 'VALUES' - ) { - ++$list->idx; // skip VALUES - - $this->values = Array2d::parse($parser, $list); - } elseif ($token->keyword === 'SET') { - ++$list->idx; // skip SET - - $this->set = SetOperation::parse($parser, $list); - } elseif ($token->keyword === 'SELECT') { - $this->select = new SelectStatement($parser, $list); - } else { - $parser->error( - 'Unexpected keyword.', - $token - ); - break; - } - $state = 2; - $miniState = 1; + if ($token->type !== TokenType::Keyword) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($token->keyword === 'VALUE' || $token->keyword === 'VALUES') { + ++$list->idx; // skip VALUES + + $this->values = Array2d::parse($parser, $list); + } elseif ($token->keyword === 'SET') { + ++$list->idx; // skip SET + + $this->set = SetOperations::parse($parser, $list); + } elseif ($token->keyword === 'SELECT') { + $this->select = new SelectStatement($parser, $list); + } elseif ($token->keyword === 'WITH') { + $this->with = new WithStatement($parser, $list); } else { - $parser->error( - 'Unexpected token.', - $token - ); + $parser->error('Unexpected keyword.', $token); break; } + + $state = 2; + $miniState = 1; } elseif ($state === 2) { $lastCount = $miniState; @@ -243,16 +228,13 @@ public function parse(Parser $parser, TokensList $list) } if ($lastCount === $miniState) { - $parser->error( - 'Unexpected token.', - $token - ); + $parser->error('Unexpected token.', $token); break; } if ($miniState === 5) { ++$list->idx; - $this->onDuplicateSet = SetOperation::parse($parser, $list); + $this->onDuplicateSet = SetOperations::parse($parser, $list); $state = 3; } } diff --git a/src/Statements/KillStatement.php b/src/Statements/KillStatement.php new file mode 100644 index 000000000..4b179663f --- /dev/null +++ b/src/Statements/KillStatement.php @@ -0,0 +1,168 @@ +> + * @psalm-var array 1, + 'SOFT' => 1, + 'CONNECTION' => 2, + 'QUERY' => 2, + 'USER' => 2, + ]; + + /** + * Holds the identifier if explicitly set + */ + public Statement|int|null $identifier = null; + + /** + * Whether MariaDB ID keyword is used or not. + */ + public bool $idKeywordUsed = false; + + /** + * Whether parenthesis used around the identifier or not + */ + public bool $parenthesisUsed = false; + + /** @throws ParserException */ + public function parse(Parser $parser, TokensList $list): void + { + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 --------------------- [ OPTIONS PARSED ] --------------------------> 0 + * + * 0 -------------------- [ number ] -----------------------------------> 2 + * + * 0 -------------------- [ ( ] ----------------------------------------> 3 + * + * 0 -------------------- [ QUERY ID ] ---------------------------------> 0 + * + * 3 -------------------- [ number ] -----------------------------------> 3 + * + * 3 -------------------- [ SELECT STATEMENT ] -------------------------> 2 + * + * 3 -------------------- [ ) ] ----------------------------------------> 2 + * + * 2 ----------------------------------------------------------> Final state + */ + $state = 0; + + ++$list->idx; // Skipping `KILL`. + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); + ++$list->idx; + for (; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + + if ($token->type === TokenType::Whitespace || $token->type === TokenType::Comment) { + continue; + } + + switch ($state) { + case 0: + $currIdx = $list->idx; + $prev = $list->getPreviousOfType(TokenType::Keyword); + $list->idx = $currIdx; + if ($token->type === TokenType::Number && is_int($token->value)) { + $this->identifier = $token->value; + $state = 2; + } elseif ($token->type === TokenType::Operator && $token->value === '(') { + $this->parenthesisUsed = true; + $state = 3; + } elseif ($prev && $token->value === 'ID' && $prev->value === 'QUERY') { + $this->idKeywordUsed = true; + $state = 0; + } else { + $parser->error('Unexpected token.', $token); + break 2; + } + + break; + + case 3: + if ($token->type === TokenType::Keyword && $token->value === 'SELECT') { + $subList = new TokensList(array_slice($list->tokens, $list->idx - 1)); + $subParser = new Parser($subList); + if ($subParser->errors !== []) { + foreach ($subParser->errors as $error) { + $parser->errors[] = $error; + } + + break; + } + + $this->identifier = $subParser->statements[0]; + $state = 2; + } elseif ($token->type === TokenType::Operator && $token->value === ')') { + $state = 2; + } elseif ($token->type === TokenType::Number && is_int($token->value)) { + $this->identifier = $token->value; + $state = 3; + } else { + $parser->error('Unexpected token.', $token); + break 2; + } + + break; + } + } + + if ($state !== 2) { + $token = $list->tokens[$list->idx]; + $parser->error('Unexpected end of the KILL statement.', $token); + } + + --$list->idx; + } + + public function build(): string + { + $ret = 'KILL'; + + if ($this->options !== null && $this->options->options !== []) { + $ret .= ' ' . $this->options->build(); + } + + if ($this->idKeywordUsed) { + $ret .= ' ID'; + } + + $identifier = (string) $this->identifier; + if ($this->parenthesisUsed) { + $ret .= ' (' . $identifier . ')'; + } else { + $ret .= ' ' . $identifier; + } + + return $ret; + } +} diff --git a/src/Statements/LoadStatement.php b/src/Statements/LoadStatement.php index c5186cf2e..c04a7677d 100644 --- a/src/Statements/LoadStatement.php +++ b/src/Statements/LoadStatement.php @@ -1,20 +1,25 @@ > + * @psalm-var array 1, 'CONCURRENT' => 1, 'LOCAL' => 2, @@ -57,10 +58,8 @@ class LoadStatement extends Statement /** * FIELDS/COLUMNS Options for `LOAD DATA...INFILE` statements. - * - * @var array */ - public static $FIELDS_OPTIONS = [ + private const STATEMENT_FIELDS_OPTIONS = [ 'TERMINATED BY' => [ 1, 'expr', @@ -78,10 +77,8 @@ class LoadStatement extends Statement /** * LINES Options for `LOAD DATA...INFILE` statements. - * - * @var array */ - public static $LINES_OPTIONS = [ + private const STATEMENT_LINES_OPTIONS = [ 'STARTING BY' => [ 1, 'expr', @@ -94,132 +91,109 @@ class LoadStatement extends Statement /** * File name being used to load data. - * - * @var Expression */ - public $file_name; + public Expression|null $fileName = null; /** * Table used as destination for this statement. - * - * @var Expression */ - public $table; + public Expression|null $table = null; /** * Partitions used as source for this statement. - * - * @var ArrayObj */ - public $partition; + public ArrayObj|null $partition = null; /** * Character set used in this statement. - * - * @var Expression */ - public $charset_name; + public Expression|null $charsetName = null; /** * Options for FIELDS/COLUMNS keyword. * - * @var OptionsArray - * - * @see static::$FIELDS_OPTIONS + * @see LoadStatement::STATEMENT_FIELDS_OPTIONS */ - public $fields_options; + public OptionsArray|null $fieldsOptions = null; /** * Whether to use `FIELDS` or `COLUMNS` while building. - * - * @var string */ - public $fields_keyword; + public string|null $fieldsKeyword = null; /** * Options for OPTIONS keyword. * - * @var OptionsArray - * - * @see static::$LINES_OPTIONS + * @see LoadStatement::STATEMENT_LINES_OPTIONS */ - public $lines_options; + public OptionsArray|null $linesOptions = null; /** * Column names or user variables. * - * @var Expression[] + * @var Expression[]|null */ - public $col_name_or_user_var; + public array|null $columnNamesOrUserVariables = null; /** * SET clause's updated values(optional). * - * @var SetOperation[] + * @var SetOperation[]|null */ - public $set; + public array|null $set = null; /** * Ignore 'number' LINES/ROWS. - * - * @var Expression */ - public $ignore_number; + public Expression|null $ignoreNumber = null; /** * REPLACE/IGNORE Keyword. - * - * @var string */ - public $replace_ignore; + public string|null $replaceIgnore = null; /** * LINES/ROWS Keyword. - * - * @var string */ - public $lines_rows; + public string|null $linesRows = null; - /** - * @return string - */ - public function build() + public function build(): string { $ret = 'LOAD DATA ' . $this->options - . ' INFILE ' . $this->file_name; + . ' INFILE ' . $this->fileName; - if ($this->replace_ignore !== null) { - $ret .= ' ' . trim($this->replace_ignore); + if ($this->replaceIgnore !== null) { + $ret .= ' ' . trim($this->replaceIgnore); } $ret .= ' INTO TABLE ' . $this->table; if ($this->partition !== null && strlen((string) $this->partition) > 0) { - $ret .= ' PARTITION ' . ArrayObj::build($this->partition); + $ret .= ' PARTITION ' . $this->partition->build(); } - if ($this->charset_name !== null) { - $ret .= ' CHARACTER SET ' . $this->charset_name; + if ($this->charsetName !== null) { + $ret .= ' CHARACTER SET ' . $this->charsetName; } - if ($this->fields_keyword !== null) { - $ret .= ' ' . $this->fields_keyword . ' ' . $this->fields_options; + if ($this->fieldsKeyword !== null) { + $ret .= ' ' . $this->fieldsKeyword . ' ' . $this->fieldsOptions; } - if ($this->lines_options !== null && strlen((string) $this->lines_options) > 0) { - $ret .= ' LINES ' . $this->lines_options; + if ($this->linesOptions !== null && strlen((string) $this->linesOptions) > 0) { + $ret .= ' LINES ' . $this->linesOptions; } - if ($this->ignore_number !== null) { - $ret .= ' IGNORE ' . $this->ignore_number . ' ' . $this->lines_rows; + if ($this->ignoreNumber !== null) { + $ret .= ' IGNORE ' . $this->ignoreNumber . ' ' . $this->linesRows; } - if ($this->col_name_or_user_var !== null && count($this->col_name_or_user_var) > 0) { - $ret .= ' ' . ExpressionArray::build($this->col_name_or_user_var); + if ($this->columnNamesOrUserVariables !== null && $this->columnNamesOrUserVariables !== []) { + $ret .= ' ' . Expressions::buildAll($this->columnNamesOrUserVariables); } - if ($this->set !== null && count($this->set) > 0) { - $ret .= ' SET ' . SetOperation::build($this->set); + if ($this->set !== null && $this->set !== []) { + $ret .= ' SET ' . SetOperations::buildAll($this->set); } return $ret; @@ -229,96 +203,79 @@ public function build() * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { ++$list->idx; // Skipping `LOAD DATA`. // parse any options if provided - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); ++$list->idx; /** * The state of the parser. - * - * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { continue; } if ($state === 0) { - if ($token->type === Token::TYPE_KEYWORD - && $token->keyword !== 'INFILE' - ) { + if ($token->type === TokenType::Keyword && $token->keyword !== 'INFILE') { $parser->error('Unexpected keyword.', $token); break; - } elseif ($token->type !== Token::TYPE_KEYWORD) { + } + + if ($token->type !== TokenType::Keyword) { $parser->error('Unexpected token.', $token); break; } ++$list->idx; - $this->file_name = Expression::parse( + $this->fileName = Expressions::parse( $parser, $list, - ['parseField' => 'file'] + ['parseField' => 'file'], ); $state = 1; } elseif ($state === 1) { - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'REPLACE' - || $token->keyword === 'IGNORE') { - $this->replace_ignore = trim($token->keyword); + if ($token->type === TokenType::Keyword) { + if ($token->keyword === 'REPLACE' || $token->keyword === 'IGNORE') { + $this->replaceIgnore = trim($token->keyword); } elseif ($token->keyword === 'INTO') { $state = 2; } } } elseif ($state === 2) { - if ($token->type === Token::TYPE_KEYWORD - && $token->keyword === 'TABLE' - ) { - ++$list->idx; - $this->table = Expression::parse($parser, $list, ['parseField' => 'table']); - $state = 3; - } else { + if ($token->type !== TokenType::Keyword || $token->keyword !== 'TABLE') { $parser->error('Unexpected token.', $token); break; } + + ++$list->idx; + $this->table = Expressions::parse($parser, $list, ['parseField' => 'table', 'breakOnAlias' => true]); + $state = 3; } elseif ($state >= 3 && $state <= 7) { - if ($token->type === Token::TYPE_KEYWORD) { - $newState = $this->parseKeywordsAccordingToState( - $parser, - $list, - $state - ); + if ($token->type === TokenType::Keyword) { + $newState = $this->parseKeywordsAccordingToState($parser, $list, $state); if ($newState === $state) { // Avoid infinite loop break; } - } elseif ($token->type === Token::TYPE_OPERATOR - && $token->token === '(' - ) { - $this->col_name_or_user_var + } elseif ($token->type === TokenType::Operator && $token->token === '(') { + $this->columnNamesOrUserVariables = ExpressionArray::parse($parser, $list); $state = 7; } else { @@ -331,30 +288,27 @@ public function parse(Parser $parser, TokensList $list) --$list->idx; } - public function parseFileOptions(Parser $parser, TokensList $list, $keyword = 'FIELDS') + /** + * @param Parser $parser The parser + * @param TokensList $list A token list + * @param string $keyword The keyword + */ + public function parseFileOptions(Parser $parser, TokensList $list, string $keyword = 'FIELDS'): void { ++$list->idx; if ($keyword === 'FIELDS' || $keyword === 'COLUMNS') { // parse field options - $this->fields_options = OptionsArray::parse( - $parser, - $list, - static::$FIELDS_OPTIONS - ); + $this->fieldsOptions = OptionsArrays::parse($parser, $list, self::STATEMENT_FIELDS_OPTIONS); - $this->fields_keyword = $keyword; + $this->fieldsKeyword = $keyword; } else { // parse line options - $this->lines_options = OptionsArray::parse( - $parser, - $list, - static::$LINES_OPTIONS - ); + $this->linesOptions = OptionsArrays::parse($parser, $list, self::STATEMENT_LINES_OPTIONS); } } - public function parseKeywordsAccordingToState($parser, $list, $state) + public function parseKeywordsAccordingToState(Parser $parser, TokensList $list, int $state): int { $token = $list->tokens[$list->idx]; @@ -362,58 +316,56 @@ public function parseKeywordsAccordingToState($parser, $list, $state) case 3: if ($token->keyword === 'PARTITION') { ++$list->idx; - $this->partition = ArrayObj::parse($parser, $list); - $state = 4; + $this->partition = ArrayObjs::parse($parser, $list); - return $state; + return 4; } + // no break case 4: if ($token->keyword === 'CHARACTER SET') { ++$list->idx; - $this->charset_name = Expression::parse($parser, $list); - $state = 5; + $this->charsetName = Expressions::parse($parser, $list); - return $state; + return 5; } + // no break case 5: - if ($token->keyword === 'FIELDS' - || $token->keyword === 'COLUMNS' - || $token->keyword === 'LINES' - ) { + if ($token->keyword === 'FIELDS' || $token->keyword === 'COLUMNS' || $token->keyword === 'LINES') { $this->parseFileOptions($parser, $list, $token->value); - $state = 6; - return $state; + return 6; } + // no break case 6: if ($token->keyword === 'IGNORE') { ++$list->idx; - $this->ignore_number = Expression::parse($parser, $list); - $nextToken = $list->getNextOfType(Token::TYPE_KEYWORD); + $this->ignoreNumber = Expressions::parse($parser, $list); + $nextToken = $list->getNextOfType(TokenType::Keyword); - if ($nextToken->type === Token::TYPE_KEYWORD + if ( + $nextToken->type === TokenType::Keyword && (($nextToken->keyword === 'LINES') || ($nextToken->keyword === 'ROWS')) ) { - $this->lines_rows = $nextToken->token; + $this->linesRows = $nextToken->token; } - $state = 7; - return $state; + return 7; } + // no break case 7: if ($token->keyword === 'SET') { ++$list->idx; - $this->set = SetOperation::parse($parser, $list); - $state = 8; + $this->set = SetOperations::parse($parser, $list); - return $state; + return 8; } + // no break default: } diff --git a/src/Statements/LockStatement.php b/src/Statements/LockStatement.php index 0166dcae0..220b600e4 100644 --- a/src/Statements/LockStatement.php +++ b/src/Statements/LockStatement.php @@ -1,23 +1,20 @@ tokens[$list->idx]->value === 'UNLOCK') { // this is in fact an UNLOCK statement $this->isLock = false; } + ++$list->idx; // Skipping `LOCK`. /** @@ -54,8 +52,6 @@ public function parse(Parser $parser, TokensList $list) * 0 ---------------- [ TABLES ] -----------------> 1 * 1 -------------- [ lock_expr ] ----------------> 2 * 2 ------------------ [ , ] --------------------> 1 - * - * @var int */ $state = 0; @@ -67,40 +63,42 @@ public function parse(Parser $parser, TokensList $list) for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { continue; } if ($state === 0) { - if ($token->type === Token::TYPE_KEYWORD) { + if ($token->type === TokenType::Keyword) { if ($token->keyword !== 'TABLES') { $parser->error('Unexpected keyword.', $token); break; } + $state = 1; continue; - } else { - $parser->error('Unexpected token.', $token); - break; } - } elseif ($state === 1) { + + $parser->error('Unexpected token.', $token); + break; + } + + if ($state === 1) { if (! $this->isLock) { // UNLOCK statement should not have any more tokens $parser->error('Unexpected token.', $token); break; } - $this->locked[] = LockExpression::parse($parser, $list); + + $this->locked[] = LockExpressions::parse($parser, $list); $state = 2; } elseif ($state === 2) { if ($token->value === ',') { @@ -112,17 +110,16 @@ public function parse(Parser $parser, TokensList $list) $prevToken = $token; } - if ($state !== 2 && $prevToken != null) { - $parser->error('Unexpected end of LOCK statement.', $prevToken); + if ($state === 2 || $prevToken === null) { + return; } + + $parser->error('Unexpected end of LOCK statement.', $prevToken); } - /** - * @return string - */ - public function build() + public function build(): string { return trim(($this->isLock ? 'LOCK' : 'UNLOCK') - . ' TABLES ' . LockExpression::build($this->locked)); + . ' TABLES ' . LockExpression::buildAll($this->locked)); } } diff --git a/src/Statements/MaintenanceStatement.php b/src/Statements/MaintenanceStatement.php index c59bb77a6..0073a2cd4 100644 --- a/src/Statements/MaintenanceStatement.php +++ b/src/Statements/MaintenanceStatement.php @@ -1,14 +1,12 @@ idx; $this->options->merge( - OptionsArray::parse( + OptionsArrays::parse( $parser, $list, - static::$OPTIONS - ) + static::$statementOptions, + ), ); } } diff --git a/src/Statements/NotImplementedStatement.php b/src/Statements/NotImplementedStatement.php index 254ca15bf..12e904eed 100644 --- a/src/Statements/NotImplementedStatement.php +++ b/src/Statements/NotImplementedStatement.php @@ -1,7 +1,5 @@ idx < $list->count; ++$list->idx) { - if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) { + if ($list->tokens[$list->idx]->type === TokenType::Delimiter) { break; } + $this->unknown[] = $list->tokens[$list->idx]; } } diff --git a/src/Statements/OptimizeStatement.php b/src/Statements/OptimizeStatement.php index cd9be0c9a..ce09fbec7 100644 --- a/src/Statements/OptimizeStatement.php +++ b/src/Statements/OptimizeStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'NO_WRITE_TO_BINLOG' => 2, @@ -36,7 +31,7 @@ class OptimizeStatement extends Statement /** * Optimized tables. * - * @var Expression[] + * @var Expression[]|null */ - public $tables; + public array|null $tables = null; } diff --git a/src/Statements/PurgeStatement.php b/src/Statements/PurgeStatement.php index 4dc385e7f..b4406be95 100644 --- a/src/Statements/PurgeStatement.php +++ b/src/Statements/PurgeStatement.php @@ -1,58 +1,48 @@ log_type . ' ' . 'LOGS ' - . ($this->end_option !== null ? ($this->end_option . ' ' . $this->end_expr) : ''); + $ret = 'PURGE ' . $this->logType . ' LOGS ' + . ($this->endOption !== null ? ($this->endOption . ' ' . $this->endExpr) : ''); + return trim($ret); } @@ -60,39 +50,36 @@ public function build() * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { ++$list->idx; // Skipping `PURGE`. /** * The state of the parser. - * - * @var int */ $state = 0; + $prevToken = null; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { continue; } switch ($state) { case 0: // parse `{ BINARY | MASTER }` - $this->log_type = self::parseExpectedKeyword($parser, $token, ['BINARY', 'MASTER']); + $this->logType = self::parseExpectedKeyword($parser, $token, ['BINARY', 'MASTER']); break; case 1: // parse `LOGS` @@ -100,44 +87,48 @@ public function parse(Parser $parser, TokensList $list) break; case 2: // parse `{ TO | BEFORE }` - $this->end_option = self::parseExpectedKeyword($parser, $token, ['TO', 'BEFORE']); + $this->endOption = self::parseExpectedKeyword($parser, $token, ['TO', 'BEFORE']); break; case 3: // parse `expr` - $this->end_expr = Expression::parse($parser, $list, []); + $this->endExpr = Expressions::parse($parser, $list, []); break; default: $parser->error('Unexpected token.', $token); break; } + $state++; $prevToken = $token; } // Only one possible end state - if ($state != 4) { - $parser->error('Unexpected token.', $prevToken); + if ($state === 4) { + return; } + + $parser->error('Unexpected token.', $prevToken); } /** * Parse expected keyword (or throw relevant error) * - * @param Parser $parser the instance that requests parsing - * @param Token $token token to be parsed - * @param Array $expected_keywords array of possibly expected keywords at this point + * @param Parser $parser the instance that requests parsing + * @param Token $token token to be parsed + * @param string[] $expectedKeywords array of possibly expected keywords at this point */ - private static function parseExpectedKeyword($parser, $token, $expected_keywords) + private static function parseExpectedKeyword(Parser $parser, Token $token, array $expectedKeywords): string|null { - if ($token->type === Token::TYPE_KEYWORD) { - if (in_array($token->keyword, $expected_keywords)) { + if ($token->type === TokenType::Keyword) { + if (in_array($token->keyword, $expectedKeywords)) { return $token->keyword; - } else { - $parser->error('Unexpected keyword', $token); } + + $parser->error('Unexpected keyword', $token); } else { $parser->error('Unexpected token.', $token); } + return null; } } diff --git a/src/Statements/RenameStatement.php b/src/Statements/RenameStatement.php index 17662d3e7..31d1ee408 100644 --- a/src/Statements/RenameStatement.php +++ b/src/Statements/RenameStatement.php @@ -1,35 +1,31 @@ type === Token::TYPE_KEYWORD) && ($token->keyword === 'RENAME')) { - // Checking if it is the beginning of the query. - $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE'); + if (($token->type !== TokenType::Keyword) || ($token->keyword !== 'RENAME')) { + return; } + + // Checking if it is the beginning of the query. + $list->getNextOfTypeAndValue(TokenType::Keyword, 'TABLE'); } - /** - * @return string - */ - public function build() + public function build(): string { - return 'RENAME TABLE ' . RenameOperation::build($this->renames); + return 'RENAME TABLE ' . RenameOperations::buildAll($this->renames); } } diff --git a/src/Statements/RepairStatement.php b/src/Statements/RepairStatement.php index e17cdeed7..8ebb090ad 100644 --- a/src/Statements/RepairStatement.php +++ b/src/Statements/RepairStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'NO_WRITE_TO_BINLOG' => 2, diff --git a/src/Statements/ReplaceStatement.php b/src/Statements/ReplaceStatement.php index 5bb5e1245..bd46ba8ce 100644 --- a/src/Statements/ReplaceStatement.php +++ b/src/Statements/ReplaceStatement.php @@ -1,19 +1,24 @@ > + * @psalm-var array 1, 'DELAYED' => 1, ]; /** * Tables used as target for this statement. - * - * @var IntoKeyword */ - public $into; + public IntoKeyword|null $into = null; /** * Values to be replaced. * - * @var Array2d + * @var ArrayObj[]|null */ - public $values; + public array|null $values = null; /** * If SET clause is present * holds the SetOperation. * - * @var SetOperation[] + * @var SetOperation[]|null */ - public $set; + public array|null $set = null; /** * If SELECT clause is present * holds the SelectStatement. - * - * @var SelectStatement */ - public $select; + public SelectStatement|null $select = null; - /** - * @return string - */ - public function build() + public function build(): string { $ret = 'REPLACE ' . $this->options; $ret = trim($ret) . ' INTO ' . $this->into; - if (! is_null($this->values) && count($this->values) > 0) { - $ret .= ' VALUES ' . Array2d::build($this->values); - } elseif (! is_null($this->set) && count($this->set) > 0) { - $ret .= ' SET ' . SetOperation::build($this->set); - } elseif (! is_null($this->select) && strlen((string) $this->select) > 0) { + if ($this->values !== null && $this->values !== []) { + $ret .= ' VALUES ' . ArrayObjs::buildAll($this->values); + } elseif ($this->set !== null && $this->set !== []) { + $ret .= ' SET ' . SetOperations::buildAll($this->set); + } elseif ($this->select !== null && strlen((string) $this->select) > 0) { $ret .= ' ' . $this->select->build(); } @@ -105,16 +100,12 @@ public function build() * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { ++$list->idx; // Skipping `REPLACE`. // parse any options if provided - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); ++$list->idx; @@ -126,73 +117,61 @@ public function parse(Parser $parser, TokensList $list) * 0 ---------------------------------[ INTO ]----------------------------------> 1 * * 1 -------------------------[ VALUES/VALUE/SET/SELECT ]-----------------------> 2 - * - * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { + if ($token->type === TokenType::Delimiter) { break; } // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if (($token->type === TokenType::Whitespace) || ($token->type === TokenType::Comment)) { continue; } if ($state === 0) { - if ($token->type === Token::TYPE_KEYWORD - && $token->keyword !== 'INTO' - ) { + if ($token->type === TokenType::Keyword && $token->keyword !== 'INTO') { $parser->error('Unexpected keyword.', $token); break; } + ++$list->idx; - $this->into = IntoKeyword::parse( + $this->into = IntoKeywords::parse( $parser, $list, - ['fromReplace' => true] + ['fromReplace' => true], ); $state = 1; } elseif ($state === 1) { - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'VALUE' - || $token->keyword === 'VALUES' - ) { - ++$list->idx; // skip VALUES - - $this->values = Array2d::parse($parser, $list); - } elseif ($token->keyword === 'SET') { - ++$list->idx; // skip SET - - $this->set = SetOperation::parse($parser, $list); - } elseif ($token->keyword === 'SELECT') { - $this->select = new SelectStatement($parser, $list); - } else { - $parser->error( - 'Unexpected keyword.', - $token - ); - break; - } - $state = 2; + if ($token->type !== TokenType::Keyword) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($token->keyword === 'VALUE' || $token->keyword === 'VALUES') { + ++$list->idx; // skip VALUES + + $this->values = Array2d::parse($parser, $list); + } elseif ($token->keyword === 'SET') { + ++$list->idx; // skip SET + + $this->set = SetOperations::parse($parser, $list); + } elseif ($token->keyword === 'SELECT') { + $this->select = new SelectStatement($parser, $list); } else { - $parser->error( - 'Unexpected token.', - $token - ); + $parser->error('Unexpected keyword.', $token); break; } + + $state = 2; } } diff --git a/src/Statements/RestoreStatement.php b/src/Statements/RestoreStatement.php index 6d2a72e7e..045a1623a 100644 --- a/src/Statements/RestoreStatement.php +++ b/src/Statements/RestoreStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, 'FROM' => [ diff --git a/src/Statements/SelectStatement.php b/src/Statements/SelectStatement.php index a77022708..982c408df 100644 --- a/src/Statements/SelectStatement.php +++ b/src/Statements/SelectStatement.php @@ -1,22 +1,30 @@ > + * @psalm-var array 1, 'DISTINCT' => 1, 'DISTINCTROW' => 1, @@ -75,7 +80,9 @@ class SelectStatement extends Statement 'SQL_CALC_FOUND_ROWS' => 9, ]; - public static $END_OPTIONS = [ + protected const STATEMENT_GROUP_OPTIONS = ['WITH ROLLUP' => 1]; + + protected const STATEMENT_END_OPTIONS = [ 'FOR UPDATE' => 1, 'LOCK IN SHARE MODE' => 1, ]; @@ -83,269 +90,548 @@ class SelectStatement extends Statement /** * The clauses of this statement, in order. * - * @see Statement::$CLAUSES + * @see Statement::$clauses * - * @var array + * @var array}> */ - public static $CLAUSES = [ + public static array $clauses = [ 'SELECT' => [ 'SELECT', - 2, + Statement::ADD_KEYWORD, ], // Used for options. '_OPTIONS' => [ '_OPTIONS', - 1, + Statement::ADD_CLAUSE, ], // Used for selected expressions. '_SELECT' => [ 'SELECT', - 1, + Statement::ADD_CLAUSE, ], 'INTO' => [ 'INTO', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'FROM' => [ 'FROM', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'FORCE' => [ 'FORCE', - 1, + Statement::ADD_CLAUSE, ], 'USE' => [ 'USE', - 1, + Statement::ADD_CLAUSE, ], 'IGNORE' => [ 'IGNORE', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'PARTITION' => [ 'PARTITION', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'JOIN' => [ 'JOIN', - 1, + Statement::ADD_CLAUSE, ], 'FULL JOIN' => [ 'FULL JOIN', - 1, + Statement::ADD_CLAUSE, ], 'INNER JOIN' => [ 'INNER JOIN', - 1, + Statement::ADD_CLAUSE, ], 'LEFT JOIN' => [ 'LEFT JOIN', - 1, + Statement::ADD_CLAUSE, ], 'LEFT OUTER JOIN' => [ 'LEFT OUTER JOIN', - 1, + Statement::ADD_CLAUSE, ], 'RIGHT JOIN' => [ 'RIGHT JOIN', - 1, + Statement::ADD_CLAUSE, ], 'RIGHT OUTER JOIN' => [ 'RIGHT OUTER JOIN', - 1, + Statement::ADD_CLAUSE, ], 'NATURAL JOIN' => [ 'NATURAL JOIN', - 1, + Statement::ADD_CLAUSE, ], 'NATURAL LEFT JOIN' => [ 'NATURAL LEFT JOIN', - 1, + Statement::ADD_CLAUSE, ], 'NATURAL RIGHT JOIN' => [ 'NATURAL RIGHT JOIN', - 1, + Statement::ADD_CLAUSE, ], 'NATURAL LEFT OUTER JOIN' => [ 'NATURAL LEFT OUTER JOIN', - 1, + Statement::ADD_CLAUSE, ], 'NATURAL RIGHT OUTER JOIN' => [ 'NATURAL RIGHT JOIN', - 1, + Statement::ADD_CLAUSE, ], - 'WHERE' => [ 'WHERE', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'GROUP BY' => [ 'GROUP BY', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, + ], + '_GROUP_OPTIONS' => [ + '_GROUP_OPTIONS', + Statement::ADD_CLAUSE, ], 'HAVING' => [ 'HAVING', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'ORDER BY' => [ 'ORDER BY', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'LIMIT' => [ 'LIMIT', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'PROCEDURE' => [ 'PROCEDURE', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'UNION' => [ 'UNION', - 1, + Statement::ADD_CLAUSE, ], 'EXCEPT' => [ 'EXCEPT', - 1, + Statement::ADD_CLAUSE, ], 'INTERSECT' => [ 'INTERSECT', - 1, + Statement::ADD_CLAUSE, ], '_END_OPTIONS' => [ '_END_OPTIONS', - 1, + Statement::ADD_CLAUSE, ], // These are available only when `UNION` is present. - // 'ORDER BY' => array('ORDER BY', 3), - // 'LIMIT' => array('LIMIT', 3), + // 'ORDER BY' => ['ORDER BY', Statement::ADD_CLAUSE|Statement::ADD_KEYWORD], + // 'LIMIT' => ['LIMIT', Statement::ADD_CLAUSE|Statement::ADD_KEYWORD], ]; /** * Expressions that are being selected by this statement. * - * @var Expression[] + * @var (CaseExpression|Expression)[] */ - public $expr = []; + public array $expr = []; /** * Tables used as sources for this statement. * * @var Expression[] */ - public $from = []; + public array $from = []; /** * Index hints * - * @var IndexHint[] + * @var IndexHint[]|null */ - public $index_hints; + public array|null $indexHints = null; /** * Partitions used as source for this statement. - * - * @var ArrayObj */ - public $partition; + public ArrayObj|null $partition = null; /** * Conditions used for filtering each row of the result set. * - * @var Condition[] + * @var Condition[]|null */ - public $where; + public array|null $where = null; /** * Conditions used for grouping the result set. * - * @var OrderKeyword[] + * @var GroupKeyword[]|null */ - public $group; + public array|null $group = null; + + /** + * List of options available for the GROUP BY component. + */ + public OptionsArray|null $groupOptions = null; /** * Conditions used for filtering the result set. * - * @var Condition[] + * @var Condition[]|null */ - public $having; + public array|null $having = null; /** * Specifies the order of the rows in the result set. * - * @var OrderKeyword[] + * @var OrderKeyword[]|null */ - public $order; + public array|null $order = null; /** * Conditions used for limiting the size of the result set. - * - * @var Limit */ - public $limit; + public Limit|null $limit = null; /** * Procedure that should process the data in the result set. - * - * @var FunctionCall */ - public $procedure; + public FunctionCall|null $procedure = null; /** * Destination of this result set. - * - * @var IntoKeyword */ - public $into; + public IntoKeyword|null $into = null; /** * Joins. * - * @var JoinKeyword[] + * @var JoinKeyword[]|null */ - public $join; + public array|null $join = null; /** * Unions. * * @var SelectStatement[] */ - public $union = []; + public array $union = []; /** * The end options of this query. * - * @var OptionsArray + * @see SelectStatement::STATEMENT_END_OPTIONS + */ + public OptionsArray|null $endOptions = null; + + /** + * Parses the statements defined by the tokens list. * - * @see static::$END_OPTIONS + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + * + * @throws ParserException */ - public $end_options; + public function parse(Parser $parser, TokensList $list): void + { + /** + * Array containing all list of clauses parsed. + * This is used to check for duplicates. + */ + $parsedClauses = []; + + // This may be corrected by the parser. + $this->first = $list->idx; + + /** + * Whether options were parsed or not. + * For statements that do not have any options this is set to `true` by + * default. + */ + $parsedOptions = static::$statementOptions === []; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === TokenType::Delimiter) { + break; + } + + // Checking if this closing bracket is the pair for a bracket + // outside the statement. + if (($token->value === ')') && ($parser->brackets > 0)) { + --$parser->brackets; + continue; + } + + // Only keywords are relevant here. Other parts of the query are + // processed in the functions below. + if ($token->type !== TokenType::Keyword) { + if (($token->type !== TokenType::Comment) && ($token->type !== TokenType::Whitespace)) { + $parser->error('Unexpected token.', $token); + } + + continue; + } + + // Unions are parsed by the parser because they represent more than + // one statement. + if ( + ($token->keyword === 'UNION') || + ($token->keyword === 'UNION ALL') || + ($token->keyword === 'UNION DISTINCT') || + ($token->keyword === 'EXCEPT') || + ($token->keyword === 'INTERSECT') + ) { + break; + } + + $lastIdx = $list->idx; + + // ON DUPLICATE KEY UPDATE ... + // has to be parsed in parent statement (INSERT or REPLACE) + // so look for it and break + if ($token->value === 'ON') { + ++$list->idx; // Skip ON + + // look for ON DUPLICATE KEY UPDATE + $first = $list->getNextOfType(TokenType::Keyword); + $second = $list->getNextOfType(TokenType::Keyword); + $third = $list->getNextOfType(TokenType::Keyword); + + if ( + $first && $second && $third + && $first->value === 'DUPLICATE' + && $second->value === 'KEY' + && $third->value === 'UPDATE' + ) { + $list->idx = $lastIdx; + break; + } + } + + $list->idx = $lastIdx; + + /** + * The name of the class that is used for parsing. + */ + $class = null; + + /** + * The name of the field where the result of the parsing is stored. + */ + $field = null; + + /** + * Parser's options. + */ + $options = []; + + // Looking for duplicated clauses. + if ( + is_string($token->value) + && ( + isset(Parser::KEYWORD_PARSERS[$token->value]) + || ( + isset(Parser::STATEMENT_PARSERS[$token->value]) + && Parser::STATEMENT_PARSERS[$token->value] !== '' + ) + ) + ) { + if (array_key_exists($token->value, $parsedClauses)) { + $parser->error('This type of clause was previously parsed.', $token); + break; + } + + $parsedClauses[$token->value] = true; + } + + // Checking if this is the beginning of a clause. + // Fix Issue #221: As `truncate` is not a keyword, + // but it might be the beginning of a statement of truncate, + // so let the value use the keyword field for truncate type. + $tokenValue = $token->keyword === 'TRUNCATE' ? $token->keyword : $token->value; + if (is_string($tokenValue) && isset(Parser::KEYWORD_PARSERS[$tokenValue]) && $list->idx < $list->count) { + $class = Parser::KEYWORD_PARSERS[$tokenValue]['class']; + $field = Parser::KEYWORD_PARSERS[$tokenValue]['field']; + if (isset(Parser::KEYWORD_PARSERS[$tokenValue]['options'])) { + $options = Parser::KEYWORD_PARSERS[$tokenValue]['options']; + } + } + + // Checking if this is the beginning of the statement. + if ( + isset(Parser::STATEMENT_PARSERS[$token->keyword]) + && Parser::STATEMENT_PARSERS[$token->keyword] !== '' + ) { + if (static::$clauses !== [] && is_string($token->value) && ! isset(static::$clauses[$token->value])) { + // Some keywords (e.g. `SET`) may be the beginning of a + // statement and a clause. + // If such keyword was found, and it cannot be a clause of + // this statement it means it is a new statement, but no + // delimiter was found between them. + $parser->error( + 'A new statement was found, but no delimiter between it and the previous one.', + $token, + ); + break; + } + + if (! $parsedOptions) { + if (! array_key_exists((string) $token->value, static::$statementOptions)) { + // Skipping keyword because if it is not a option. + ++$list->idx; + } + + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); + $parsedOptions = true; + } + } elseif ($class === null) { + if ($token->value === 'WITH ROLLUP') { + // Handle group options in Select statement + $this->groupOptions = OptionsArrays::parse($parser, $list, self::STATEMENT_GROUP_OPTIONS); + } elseif ($token->value === 'FOR UPDATE' || $token->value === 'LOCK IN SHARE MODE') { + // Handle special end options in Select statement + $this->endOptions = OptionsArrays::parse($parser, $list, self::STATEMENT_END_OPTIONS); + } else { + // There is no parser for this keyword and isn't the beginning + // of a statement (so no options) either. + $parser->error('Unrecognized keyword.', $token); + continue; + } + } + + if ($class === null) { + continue; + } + + // Parsing this keyword. + // We can't parse keyword at the end of statement + if ($list->idx >= $list->count) { + $parser->error('Keyword at end of statement.', $token); + continue; + } + + ++$list->idx; // Skipping keyword or last option. + $this->$field = $class::parse($parser, $list, $options); + } + + // This may be corrected by the parser. + $this->last = --$list->idx; // Go back to last used token. + } /** * Gets the clauses of this statement. * - * @return array + * @return array}> */ - public function getClauses() + public function getClauses(): array { // This is a cheap fix for `SELECT` statements that contain `UNION`. // The `ORDER BY` and `LIMIT` clauses should be at the end of the // statement. - if (! empty($this->union)) { - $clauses = static::$CLAUSES; + if ($this->union !== []) { + $clauses = static::$clauses; unset($clauses['ORDER BY'], $clauses['LIMIT']); $clauses['ORDER BY'] = [ 'ORDER BY', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ]; $clauses['LIMIT'] = [ 'LIMIT', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ]; return $clauses; } - return static::$CLAUSES; + return static::$clauses; + } + + /** + * Gets a list of all aliases and their original names. + * + * @param string $database the name of the database + * + * @return array|string|null>>|null>> + */ + public function getAliases(string $database): array + { + if ($this->expr === [] || $this->from === []) { + return []; + } + + $retval = []; + + $tables = []; + + /** + * Expressions that may contain aliases. + * These are extracted from `FROM` and `JOIN` keywords. + */ + $expressions = $this->from; + + // Adding expressions from JOIN. + if (! empty($this->join)) { + foreach ($this->join as $join) { + $expressions[] = $join->expr; + } + } + + foreach ($expressions as $expr) { + if (! isset($expr->table) || ($expr->table === '')) { + continue; + } + + $thisDb = isset($expr->database) && ($expr->database !== '') ? + $expr->database : $database; + + if (! isset($retval[$thisDb])) { + $retval[$thisDb] = [ + 'alias' => null, + 'tables' => [], + ]; + } + + if (! isset($retval[$thisDb]['tables'][$expr->table])) { + $retval[$thisDb]['tables'][$expr->table] = [ + 'alias' => isset($expr->alias) && ($expr->alias !== '') ? + $expr->alias : null, + 'columns' => [], + ]; + } + + if (! isset($tables[$thisDb])) { + $tables[$thisDb] = []; + } + + $tables[$thisDb][$expr->alias] = $expr->table; + } + + foreach ($this->expr as $expr) { + if (! isset($expr->column, $expr->alias) || ($expr->column === '') || ($expr->alias === '')) { + continue; + } + + $thisDb = isset($expr->database) && ($expr->database !== '') ? + $expr->database : $database; + + if (isset($expr->table) && ($expr->table !== '')) { + $thisTable = $tables[$thisDb][$expr->table] ?? $expr->table; + $retval[$thisDb]['tables'][$thisTable]['columns'][$expr->column] = $expr->alias; + } else { + foreach ($retval[$thisDb]['tables'] as &$table) { + $table['columns'][$expr->column] = $expr->alias; + } + } + } + + return $retval; } } diff --git a/src/Statements/SetStatement.php b/src/Statements/SetStatement.php index cc1e4878f..3f7117e41 100644 --- a/src/Statements/SetStatement.php +++ b/src/Statements/SetStatement.php @@ -1,48 +1,46 @@ }> */ - public static $CLAUSES = [ + public static array $clauses = [ 'SET' => [ 'SET', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], '_END_OPTIONS' => [ '_END_OPTIONS', - 1, + Statement::ADD_CLAUSE, ], ]; /** - * Possible exceptions in SET statment. + * Possible exceptions in SET statement. * - * @var array + * @var array> + * @psalm-var array [ 3, 'var', @@ -59,9 +57,17 @@ class SetStatement extends Statement 3, 'expr', ], + 'SESSION' => 3, + 'GLOBAL' => 3, + 'PERSIST' => 3, + 'PERSIST_ONLY' => 3, + '@@SESSION' => 3, + '@@GLOBAL' => 3, + '@@PERSIST' => 3, + '@@PERSIST_ONLY' => 3, ]; - public static $END_OPTIONS = [ + protected const STATEMENT_END_OPTIONS = [ 'COLLATE' => [ 1, 'var', @@ -71,35 +77,28 @@ class SetStatement extends Statement /** * Options used in current statement. - * - * @var OptionsArray[] */ - public $options; + public OptionsArray|null $options = null; /** * The end options of this query. * - * @var OptionsArray - * - * @see static::$END_OPTIONS + * @see SetStatement::STATEMENT_END_OPTIONS */ - public $end_options; + public OptionsArray|null $endOptions = null; /** * The updated values. * - * @var SetOperation[] + * @var SetOperation[]|null */ - public $set; + public array|null $set = null; - /** - * @return string - */ - public function build() + public function build(): string { - $ret = 'SET ' . OptionsArray::build($this->options) - . ' ' . SetOperation::build($this->set) - . ' ' . OptionsArray::build($this->end_options); + $ret = 'SET ' . $this->options->build() + . ' ' . SetOperations::buildAll($this->set) + . ' ' . ($this->endOptions?->build() ?? ''); return trim($ret); } diff --git a/src/Statements/ShowStatement.php b/src/Statements/ShowStatement.php index d3329689d..9da56babe 100644 --- a/src/Statements/ShowStatement.php +++ b/src/Statements/ShowStatement.php @@ -1,26 +1,21 @@ > + * @psalm-var array 1, 'AUTHORS' => 2, 'BINARY' => 2, diff --git a/src/Statements/TransactionStatement.php b/src/Statements/TransactionStatement.php index 7c07b5faa..7894b41dd 100644 --- a/src/Statements/TransactionStatement.php +++ b/src/Statements/TransactionStatement.php @@ -1,66 +1,52 @@ > + * @psalm-var array 1, 'BEGIN' => 1, 'COMMIT' => 1, @@ -77,28 +63,21 @@ class TransactionStatement extends Statement * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ - public function parse(Parser $parser, TokensList $list) + public function parse(Parser $parser, TokensList $list): void { parent::parse($parser, $list); // Checks the type of this query. - if ($this->options->has('START TRANSACTION') - || $this->options->has('BEGIN') - ) { + if ($this->options->has('START TRANSACTION') || $this->options->has('BEGIN')) { $this->type = self::TYPE_BEGIN; - } elseif ($this->options->has('COMMIT') - || $this->options->has('ROLLBACK') - ) { + } elseif ($this->options->has('COMMIT') || $this->options->has('ROLLBACK')) { $this->type = self::TYPE_END; } } - /** - * @return string - */ - public function build() + public function build(): string { - $ret = OptionsArray::build($this->options); + $ret = $this->options->build(); if ($this->type === self::TYPE_BEGIN) { foreach ($this->statements as $statement) { /* @@ -106,7 +85,11 @@ public function build() */ $ret .= ';' . $statement->build(); } - $ret .= ';' . $this->end->build(); + + $ret .= ';'; + if ($this->end !== null) { + $ret .= $this->end->build(); + } } return $ret; diff --git a/src/Statements/TruncateStatement.php b/src/Statements/TruncateStatement.php index 519ffafc5..2cad3cbd9 100644 --- a/src/Statements/TruncateStatement.php +++ b/src/Statements/TruncateStatement.php @@ -1,7 +1,5 @@ > + * @psalm-var array 1, - ]; + public static array $statementOptions = ['TABLE' => 1]; /** * The name of the truncated table. - * - * @var Expression */ - public $table; + public Expression|null $table = null; /** * Special build method for truncate statement as Statement::build would return empty string. - * - * @return string */ - public function build() + public function build(): string { return 'TRUNCATE TABLE ' . $this->table . ';'; } diff --git a/src/Statements/UpdateStatement.php b/src/Statements/UpdateStatement.php index 8e6708f2a..efc4a0bcb 100644 --- a/src/Statements/UpdateStatement.php +++ b/src/Statements/UpdateStatement.php @@ -1,22 +1,26 @@ > + * @psalm-var array 1, 'IGNORE' => 2, ]; @@ -47,75 +48,111 @@ class UpdateStatement extends Statement /** * The clauses of this statement, in order. * - * @see Statement::$CLAUSES + * @see Statement::$clauses * - * @var array + * @var array}> */ - public static $CLAUSES = [ + public static array $clauses = [ 'UPDATE' => [ 'UPDATE', - 2, + Statement::ADD_KEYWORD, ], // Used for options. '_OPTIONS' => [ '_OPTIONS', - 1, + Statement::ADD_CLAUSE, ], // Used for updated tables. '_UPDATE' => [ 'UPDATE', - 1, + Statement::ADD_CLAUSE, + ], + 'JOIN' => [ + 'JOIN', + Statement::ADD_CLAUSE, + ], + 'LEFT JOIN' => [ + 'LEFT JOIN', + Statement::ADD_CLAUSE, + ], + 'INNER JOIN' => [ + 'INNER JOIN', + Statement::ADD_CLAUSE, ], 'SET' => [ 'SET', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'WHERE' => [ 'WHERE', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'ORDER BY' => [ 'ORDER BY', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], 'LIMIT' => [ 'LIMIT', - 3, + Statement::ADD_CLAUSE | Statement::ADD_KEYWORD, ], ]; /** * Tables used as sources for this statement. * - * @var Expression[] + * @var Expression[]|null */ - public $tables; + public array|null $tables = null; /** * The updated values. * - * @var SetOperation[] + * @var SetOperation[]|null */ - public $set; + public array|null $set = null; /** * Conditions used for filtering each row of the result set. * - * @var Condition[] + * @var Condition[]|null */ - public $where; + public array|null $where = null; /** * Specifies the order of the rows in the result set. * - * @var OrderKeyword[] + * @var OrderKeyword[]|null */ - public $order; + public array|null $order = null; /** * Conditions used for limiting the size of the result set. + */ + public Limit|null $limit = null; + + /** + * Joins. + * + * @var JoinKeyword[]|null + */ + public array|null $join = null; + + /** + * Function called after the token was processed. + * In the update statement, this is used to check that at least one assignment has been set to throw an error if a + * query like `UPDATE acme SET WHERE 1;` is parsed. * - * @var Limit + * @throws ParserException throws the exception, if strict mode is enabled. */ - public $limit; + public function after(Parser $parser, TokensList $list, Token $token): void + { + /** @psalm-var string $tokenValue */ + $tokenValue = $token->value; + // Ensure we finished to parse the "SET" token, and if yes, ensure that assignments are defined. + if ($this->set !== [] || (Parser::KEYWORD_PARSERS[$tokenValue]['field'] ?? null) !== 'set') { + return; + } + + $parser->error('Missing assignment in SET operation.', $list->tokens[$list->idx]); + } } diff --git a/src/Statements/WithStatement.php b/src/Statements/WithStatement.php new file mode 100644 index 000000000..0da0a7cf7 --- /dev/null +++ b/src/Statements/WithStatement.php @@ -0,0 +1,330 @@ +> + * @psalm-var array 1]; + + /** + * The clauses of this statement, in order. + * + * @see Statement::$clauses + * + * @var array}> + */ + public static array $clauses = [ + 'WITH' => [ + 'WITH', + Statement::ADD_KEYWORD, + ], + // Used for options. + '_OPTIONS' => [ + '_OPTIONS', + Statement::ADD_CLAUSE, + ], + 'AS' => [ + 'AS', + Statement::ADD_KEYWORD, + ], + ]; + + /** @var WithKeyword[] */ + public array $withers = []; + + /** + * holds the CTE parser. + */ + public Parser|null $cteStatementParser = null; + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list): void + { + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------- [ name ] -----------------> 1 + * + * 1 ------------------ [ ( ] ------------------> 2 + * + * 2 ------------------ [ AS ] -----------------> 3 + * + * 3 ------------------ [ ( ] ------------------> 4 + * + * 4 ------------------ [ , ] ------------------> 1 + * + * 4 ----- [ SELECT/UPDATE/DELETE/INSERT ] -----> 5 + */ + $state = 0; + $wither = null; + + ++$list->idx; // Skipping `WITH`. + + // parse any options if provided + $this->options = OptionsArrays::parse($parser, $list, static::$statementOptions); + ++$list->idx; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + // Skipping whitespaces and comments. + if ($token->type === TokenType::Whitespace || $token->type === TokenType::Comment) { + continue; + } + + if ($state === 0) { + if ($token->type !== TokenType::None || ! preg_match('/^[a-zA-Z0-9_$]+$/', $token->token)) { + $parser->error('The name of the CTE was expected.', $token); + break; + } + + $wither = $token->value; + $this->withers[$wither] = new WithKeyword($wither); + $state = 1; + } elseif ($state === 1) { + if ($token->type === TokenType::Operator && $token->value === '(') { + $columns = Array2d::parse($parser, $list); + if ($parser->errors !== []) { + break; + } + + $this->withers[$wither]->columns = $columns; + $state = 2; + } elseif ($token->type === TokenType::Keyword && $token->keyword === 'AS') { + $state = 3; + } else { + $parser->error('Unexpected token.', $token); + break; + } + } elseif ($state === 2) { + if (! ($token->type === TokenType::Keyword && $token->keyword === 'AS')) { + $parser->error('AS keyword was expected.', $token); + break; + } + + $state = 3; + } elseif ($state === 3) { + $idxBeforeGetNext = $list->idx; + + $list->idx++; // Ignore the current token + $nextKeyword = $list->getNext(); + + if (! ($token->value === '(' && ($nextKeyword && $nextKeyword->value === 'SELECT'))) { + $parser->error('Subquery of the CTE was expected.', $token); + $list->idx = $idxBeforeGetNext; + break; + } + + // Restore the index + $list->idx = $idxBeforeGetNext; + + ++$list->idx; + $subList = $this->getSubTokenList($list); + if ($subList instanceof ParserException) { + $parser->errors[] = $subList; + break; + } + + $subParser = new Parser($subList); + + if ($subParser->errors !== []) { + foreach ($subParser->errors as $error) { + $parser->errors[] = $error; + } + + break; + } + + $this->withers[$wither]->statement = $subParser; + + $state = 4; + } elseif ($state === 4) { + if ($token->value === ',') { + // There's another WITH expression to parse, go back to state=0 + $state = 0; + continue; + } + + if ( + $token->type === TokenType::Keyword && ( + $token->value === 'SELECT' + || $token->value === 'INSERT' + || $token->value === 'UPDATE' + || $token->value === 'DELETE' + ) + ) { + $state = 5; + --$list->idx; + continue; + } + + $parser->error('An expression was expected.', $token); + break; + } elseif ($state === 5) { + /** + * We need to parse all of the remaining tokens becuase mostly, they are only the CTE expression + * which's mostly is SELECT, or INSERT, UPDATE, or delete statement. + * e.g: INSERT .. ( SELECT 1 ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3. + * The issue is that, `ON DUPLICATE KEY UPDATE col_name = 3` is related to the main INSERT query + * not the cte expression (SELECT col1 FROM cte) we need to determine the end of the expression + * to parse `ON DUPLICATE KEY UPDATE` from the InsertStatement parser instead. + */ + + // Index of the last parsed token by default would be the last token in the $list, because we're + // assuming that all remaining tokens at state 4, are related to the expression. + $idxOfLastParsedToken = $list->count - 1; + // Index before search to be able to restore the index. + $idxBeforeSearch = $list->idx; + // Length of expression tokens is null by default, in order for the $subList to start + // from $list->idx to the end of the $list. + $lengthOfExpressionTokens = null; + + if ($list->getNextOfTypeAndValue(TokenType::Keyword, 'ON')) { + // (-1) because getNextOfTypeAndValue returned ON and increased the index. + $idxOfOn = $list->idx - 1; + // We want to make sure that it's `ON DUPLICATE KEY UPDATE` + $dubplicateToken = $list->getNext(); + $keyToken = $list->getNext(); + $updateToken = $list->getNext(); + if ( + $dubplicateToken && $dubplicateToken->keyword === 'DUPLICATE' + && ($keyToken && $keyToken->keyword === 'KEY') + && ($updateToken && $updateToken->keyword === 'UPDATE') + ) { + // Index of the last parsed token will be the token before the ON Keyword + $idxOfLastParsedToken = $idxOfOn - 1; + // The length of the expression tokens would be the difference + // between the first unrelated token `ON` and the idx + // before skipping the CTE tokens. + $lengthOfExpressionTokens = $idxOfOn - $idxBeforeSearch; + } + } + + // Restore the index + $list->idx = $idxBeforeSearch; + + $subList = new TokensList(array_slice($list->tokens, $list->idx, $lengthOfExpressionTokens)); + $subParser = new Parser($subList); + if ($subParser->errors !== []) { + foreach ($subParser->errors as $error) { + $parser->errors[] = $error; + } + + break; + } + + $this->cteStatementParser = $subParser; + + $list->idx = $idxOfLastParsedToken; + break; + } + } + + // 5 is the only valid end state + if ($state !== 5) { + /** + * Token parsed at this moment. + */ + $token = $list->tokens[$list->idx]; + + $parser->error('Unexpected end of the WITH CTE.', $token); + } + + --$list->idx; + } + + public function build(): string + { + $str = 'WITH '; + + if ($this->options !== null && $this->options->options !== []) { + $str .= $this->options->build() . ' '; + } + + if ($this->withers !== []) { + $str .= implode(', ', $this->withers) . ' '; + } + + if ($this->cteStatementParser) { + $str .= implode('', $this->cteStatementParser->statements); + } + + return $str; + } + + /** + * Get tokens within the WITH expression to use them in another parser + */ + private function getSubTokenList(TokensList $list): ParserException|TokensList + { + $idx = $list->idx; + $token = $list->tokens[$list->idx]; + $openParenthesis = 0; + + while ($list->idx < $list->count) { + if ($token->value === '(') { + ++$openParenthesis; + } elseif ($token->value === ')') { + if (--$openParenthesis === -1) { + break; + } + } + + ++$list->idx; + if (! isset($list->tokens[$list->idx])) { + break; + } + + $token = $list->tokens[$list->idx]; + } + + // performance improvement: return the error to avoid a try/catch in the loop + if ($list->idx === $list->count) { + --$list->idx; + + return new ParserException( + Translator::gettext('A closing bracket was expected.'), + $token, + ); + } + + $length = $list->idx - $idx; + + return new TokensList(array_slice($list->tokens, $idx, $length)); + } +} diff --git a/src/Token.php b/src/Token.php index fe43e8bc8..b325ea552 100644 --- a/src/Token.php +++ b/src/Token.php @@ -1,246 +1,123 @@ , !==, etc. - * Bitwise operators: &, |, ^, etc. - * Assignment operators: =, +=, -=, etc. - * SQL specific operators: . (e.g. .. WHERE database.table ..), - * * (e.g. SELECT * FROM ..) - * - * @var int - */ - const TYPE_OPERATOR = 2; - - /** - * Spaces, tabs, new lines, etc. - * - * @var int - */ - const TYPE_WHITESPACE = 3; - - /** - * Any type of legal comment. - * - * Bash (#), C (/* *\/) or SQL (--) comments: - * - * -- SQL-comment - * - * #Bash-like comment - * - * /*C-like comment*\/ - * - * or: - * - * /*C-like - * comment*\/ - * - * Backslashes were added to respect PHP's comments syntax. - * - * @var int - */ - const TYPE_COMMENT = 4; - - /** - * Boolean values: true or false. - * - * @var int - */ - const TYPE_BOOL = 5; - - /** - * Numbers: 4, 0x8, 15.16, 23e42, etc. - * - * @var int - */ - const TYPE_NUMBER = 6; - - /** - * Literal strings: 'string', "test". - * Some of these strings are actually symbols. - * - * @var int - */ - const TYPE_STRING = 7; - - /** - * Database, table names, variables, etc. - * For example: ```SELECT `foo`, `bar` FROM `database`.`table`;```. - * - * @var int - */ - const TYPE_SYMBOL = 8; - - /** - * Delimits an unknown string. - * For example: ```SELECT * FROM test;```, `test` is a delimiter. - * - * @var int - */ - const TYPE_DELIMITER = 9; - - /** - * Labels in LOOP statement, ITERATE statement etc. - * For example (only for begin label): - * begin_label: BEGIN [statement_list] END [end_label] - * begin_label: LOOP [statement_list] END LOOP [end_label] - * begin_label: REPEAT [statement_list] ... END REPEAT [end_label] - * begin_label: WHILE ... DO [statement_list] END WHILE [end_label]. - * - * @var int - */ - const TYPE_LABEL = 10; + public const FLAG_NONE = 0; // Flags that describe the tokens in more detail. // All keywords must have flag 1 so `Context::isKeyword` method doesn't // require strict comparison. - const FLAG_KEYWORD_RESERVED = 2; - const FLAG_KEYWORD_COMPOSED = 4; - const FLAG_KEYWORD_DATA_TYPE = 8; - const FLAG_KEYWORD_KEY = 16; - const FLAG_KEYWORD_FUNCTION = 32; + public const FLAG_KEYWORD = 1; + public const FLAG_KEYWORD_RESERVED = 2; + public const FLAG_KEYWORD_COMPOSED = 4; + public const FLAG_KEYWORD_DATA_TYPE = 8; + public const FLAG_KEYWORD_KEY = 16; + public const FLAG_KEYWORD_FUNCTION = 32; // Numbers related flags. - const FLAG_NUMBER_HEX = 1; - const FLAG_NUMBER_FLOAT = 2; - const FLAG_NUMBER_APPROXIMATE = 4; - const FLAG_NUMBER_NEGATIVE = 8; - const FLAG_NUMBER_BINARY = 16; + public const FLAG_NUMBER_HEX = 1; + public const FLAG_NUMBER_FLOAT = 2; + public const FLAG_NUMBER_APPROXIMATE = 4; + public const FLAG_NUMBER_NEGATIVE = 8; + public const FLAG_NUMBER_BINARY = 16; // Strings related flags. - const FLAG_STRING_SINGLE_QUOTES = 1; - const FLAG_STRING_DOUBLE_QUOTES = 2; + public const FLAG_STRING_SINGLE_QUOTES = 1; + public const FLAG_STRING_DOUBLE_QUOTES = 2; // Comments related flags. - const FLAG_COMMENT_BASH = 1; - const FLAG_COMMENT_C = 2; - const FLAG_COMMENT_SQL = 4; - const FLAG_COMMENT_MYSQL_CMD = 8; + public const FLAG_COMMENT_BASH = 1; + public const FLAG_COMMENT_C = 2; + public const FLAG_COMMENT_SQL = 4; + public const FLAG_COMMENT_MYSQL_CMD = 8; // Operators related flags. - const FLAG_OPERATOR_ARITHMETIC = 1; - const FLAG_OPERATOR_LOGICAL = 2; - const FLAG_OPERATOR_BITWISE = 4; - const FLAG_OPERATOR_ASSIGNMENT = 8; - const FLAG_OPERATOR_SQL = 16; + public const FLAG_OPERATOR_ARITHMETIC = 1; + public const FLAG_OPERATOR_LOGICAL = 2; + public const FLAG_OPERATOR_BITWISE = 4; + public const FLAG_OPERATOR_ASSIGNMENT = 8; + public const FLAG_OPERATOR_SQL = 16; // Symbols related flags. - const FLAG_SYMBOL_VARIABLE = 1; - const FLAG_SYMBOL_BACKTICK = 2; - const FLAG_SYMBOL_USER = 4; - const FLAG_SYMBOL_SYSTEM = 8; - const FLAG_SYMBOL_PARAMETER = 16; + public const FLAG_SYMBOL_VARIABLE = 1; + public const FLAG_SYMBOL_BACKTICK = 2; + public const FLAG_SYMBOL_USER = 4; + public const FLAG_SYMBOL_SYSTEM = 8; + public const FLAG_SYMBOL_PARAMETER = 16; /** * The token it its raw string representation. - * - * @var string */ - public $token; + public string $token; /** * The value this token contains (i.e. token after some evaluation). - * - * @var mixed */ - public $value; + public bool|float|int|string $value; /** * The keyword value this token contains, always uppercase. - * - * @var mixed */ - public $keyword; + public string|null $keyword = null; /** * The type of this token. - * - * @var int */ - public $type; + public TokenType $type; /** * The flags of this token. - * - * @var int */ - public $flags; + public int $flags; /** * The position in the initial string where this token started. * * The position is counted in chars, not bytes, so you should * use mb_* functions to properly handle utf-8 multibyte chars. - * - * @var int */ - public $position; + public int|null $position = null; /** - * Constructor. - * - * @param string $token the value of the token - * @param int $type the type of the token - * @param int $flags the flags of the token + * @param string $token the value of the token + * @param TokenType $type the type of the token + * @param int $flags the flags of the token */ - public function __construct($token, $type = 0, $flags = 0) + public function __construct(string $token, TokenType $type = TokenType::None, int $flags = self::FLAG_NONE) { $this->token = $token; $this->type = $type; $this->flags = $flags; - $this->keyword = null; $this->value = $this->extract(); } /** - * Does little processing to the token to extract a value. + * Does a little processing to the token to extract a value. * * If no processing can be done it will return the initial string. - * - * @return mixed */ - public function extract() + public function extract(): bool|float|int|string { switch ($this->type) { - case self::TYPE_KEYWORD: + case TokenType::Keyword: $this->keyword = strtoupper($this->token); if (! ($this->flags & self::FLAG_KEYWORD_RESERVED)) { // Unreserved keywords should stay the way they are because they @@ -249,30 +126,31 @@ public function extract() } return $this->keyword; - case self::TYPE_WHITESPACE: + + case TokenType::Whitespace: return ' '; - case self::TYPE_BOOL: + + case TokenType::Bool: return strtoupper($this->token) === 'TRUE'; - case self::TYPE_NUMBER: + + case TokenType::Number: $ret = str_replace('--', '', $this->token); // e.g. ---42 === -42 if ($this->flags & self::FLAG_NUMBER_HEX) { + $ret = str_replace(['-', '+'], '', $this->token); if ($this->flags & self::FLAG_NUMBER_NEGATIVE) { - $ret = str_replace('-', '', $this->token); - sscanf($ret, '%x', $ret); - $ret = -$ret; + $ret = -hexdec($ret); } else { - sscanf($ret, '%x', $ret); + $ret = hexdec($ret); } - } elseif (($this->flags & self::FLAG_NUMBER_APPROXIMATE) - || ($this->flags & self::FLAG_NUMBER_FLOAT) - ) { - sscanf($ret, '%f', $ret); - } else { - sscanf($ret, '%d', $ret); + } elseif (($this->flags & self::FLAG_NUMBER_APPROXIMATE) || ($this->flags & self::FLAG_NUMBER_FLOAT)) { + $ret = (float) $ret; + } elseif (! ($this->flags & self::FLAG_NUMBER_BINARY)) { + $ret = (int) $ret; } return $ret; - case self::TYPE_STRING: + + case TokenType::String: // Trims quotes. $str = $this->token; $str = mb_substr($str, 1, -1, 'UTF-8'); @@ -293,41 +171,41 @@ public function extract() $str = stripcslashes($str); return $str; - case self::TYPE_SYMBOL: + + case TokenType::Symbol: $str = $this->token; if (isset($str[0]) && ($str[0] === '@')) { // `mb_strlen($str)` must be used instead of `null` because // in PHP 5.3- the `null` parameter isn't handled correctly. $str = mb_substr( $str, - (! empty($str[1]) && ($str[1] === '@')) ? 2 : 1, + ! empty($str[1]) && ($str[1] === '@') ? 2 : 1, mb_strlen($str), - 'UTF-8' + 'UTF-8', ); } + if (isset($str[0]) && ($str[0] === ':')) { $str = mb_substr($str, 1, mb_strlen($str), 'UTF-8'); } - if (isset($str[0]) && (($str[0] === '`') - || ($str[0] === '"') || ($str[0] === '\'')) - ) { + + if (isset($str[0]) && (($str[0] === '`') || ($str[0] === '"') || ($str[0] === '\''))) { $quote = $str[0]; - $str = str_replace($quote . $quote, $quote, $str); $str = mb_substr($str, 1, -1, 'UTF-8'); + $str = str_replace($quote . $quote, $quote, $str); } return $str; - } - return $this->token; + default: + return $this->token; + } } /** * Converts the token into an inline token by replacing tabs and new lines. - * - * @return string */ - public function getInlineToken() + public function getInlineToken(): string { return str_replace( [ @@ -340,7 +218,7 @@ public function getInlineToken() '\n', '\t', ], - $this->token + $this->token, ); } } diff --git a/src/TokenType.php b/src/TokenType.php new file mode 100644 index 000000000..cc13516a3 --- /dev/null +++ b/src/TokenType.php @@ -0,0 +1,95 @@ +, !==, etc. + * Bitwise operators: &, |, ^, etc. + * Assignment operators: =, +=, -=, etc. + * SQL specific operators: . (e.g. .. WHERE database.table ..), + * * (e.g. SELECT * FROM ..) + */ + case Operator = 2; + + /** + * Spaces, tabs, new lines, etc. + */ + case Whitespace = 3; + + /** + * Any type of legal comment. + * + * Bash (#), C (/* *\/) or SQL (--) comments: + * + * -- SQL-comment + * + * #Bash-like comment + * + * /*C-like comment*\/ + * + * or: + * + * /*C-like + * comment*\/ + * + * Backslashes were added to respect PHP's comments syntax. + */ + case Comment = 4; + + /** + * Boolean values: true or false. + */ + case Bool = 5; + + /** + * Numbers: 4, 0x8, 15.16, 23e42, etc. + */ + case Number = 6; + + /** + * Literal strings: 'string', "test". + * Some of these strings are actually symbols. + */ + case String = 7; + + /** + * Database, table names, variables, etc. + * For example: ```SELECT `foo`, `bar` FROM `database`.`table`;```. + */ + case Symbol = 8; + + /** + * Delimits an unknown string. + * For example: ```SELECT * FROM test;```, `test` is a delimiter. + */ + case Delimiter = 9; + + /** + * Labels in LOOP statement, ITERATE statement etc. + * For example (only for begin label): + * begin_label: BEGIN [statement_list] END [end_label] + * begin_label: LOOP [statement_list] END LOOP [end_label] + * begin_label: REPEAT [statement_list] ... END REPEAT [end_label] + * begin_label: WHILE ... DO [statement_list] END WHILE [end_label]. + */ + case Label = 10; +} diff --git a/src/TokensList.php b/src/TokensList.php index 507d68bdd..2f2202df6 100644 --- a/src/TokensList.php +++ b/src/TokensList.php @@ -1,79 +1,59 @@ */ -class TokensList implements \ArrayAccess +class TokensList implements ArrayAccess { - /** - * The array of tokens. - * - * @var array - */ - public $tokens = []; - /** * The count of tokens. - * - * @var int */ - public $count = 0; + public int $count = 0; /** * The index of the next token to be returned. - * - * @var int */ - public $idx = 0; + public int $idx = 0; + + /** @param Token[] $tokens The array of tokens. */ + public function __construct(public array $tokens = []) + { + $this->count = count($tokens); + } /** - * Constructor. - * - * @param array $tokens the initial array of tokens - * @param int $count the count of tokens in the initial array + * Builds an array of tokens by merging their raw value. */ - public function __construct(array $tokens = [], $count = -1) + public function build(): string { - if (! empty($tokens)) { - $this->tokens = $tokens; - if ($count === -1) { - $this->count = count($tokens); - } - } + return static::buildFromArray($this->tokens); } /** * Builds an array of tokens by merging their raw value. * - * @param string|Token[]|TokensList $list the tokens to be built - * - * @return string + * @param Token[] $list the tokens to be built */ - public static function build($list) + public static function buildFromArray(array $list): string { - if (is_string($list)) { - return $list; - } - - if ($list instanceof self) { - $list = $list->tokens; - } - $ret = ''; - if (is_array($list)) { - foreach ($list as $tok) { - $ret .= $tok->token; - } + foreach ($list as $token) { + $ret .= $token->token; } return $ret; @@ -84,7 +64,7 @@ public static function build($list) * * @param Token $token token to be added in list */ - public function add(Token $token) + public function add(Token $token): void { $this->tokens[$this->count++] = $token; } @@ -92,14 +72,13 @@ public function add(Token $token) /** * Gets the next token. Skips any irrelevant token (whitespaces and * comments). - * - * @return Token */ - public function getNext() + public function getNext(): Token|null { for (; $this->idx < $this->count; ++$this->idx) { - if (($this->tokens[$this->idx]->type !== Token::TYPE_WHITESPACE) - && ($this->tokens[$this->idx]->type !== Token::TYPE_COMMENT) + if ( + ($this->tokens[$this->idx]->type !== TokenType::Whitespace) + && ($this->tokens[$this->idx]->type !== TokenType::Comment) ) { return $this->tokens[$this->idx++]; } @@ -109,16 +88,56 @@ public function getNext() } /** - * Gets the next token. + * Gets the previous token. Skips any irrelevant token (whitespaces and + * comments). + */ + public function getPrevious(): Token|null + { + for (; $this->idx >= 0; --$this->idx) { + if ( + ($this->tokens[$this->idx]->type !== TokenType::Whitespace) + && ($this->tokens[$this->idx]->type !== TokenType::Comment) + ) { + return $this->tokens[$this->idx--]; + } + } + + return null; + } + + /** + * Gets the previous token. * - * @param int $type the type + * @param TokenType|TokenType[] $type the type + */ + public function getPreviousOfType(TokenType|array $type): Token|null + { + if (! is_array($type)) { + $type = [$type]; + } + + for (; $this->idx >= 0; --$this->idx) { + if (in_array($this->tokens[$this->idx]->type, $type, true)) { + return $this->tokens[$this->idx--]; + } + } + + return null; + } + + /** + * Gets the next token. * - * @return Token + * @param TokenType|TokenType[] $type the type */ - public function getNextOfType($type) + public function getNextOfType(TokenType|array $type): Token|null { + if (! is_array($type)) { + $type = [$type]; + } + for (; $this->idx < $this->count; ++$this->idx) { - if ($this->tokens[$this->idx]->type === $type) { + if (in_array($this->tokens[$this->idx]->type, $type, true)) { return $this->tokens[$this->idx++]; } } @@ -129,17 +148,30 @@ public function getNextOfType($type) /** * Gets the next token. * - * @param int $type the type of the token - * @param string $value the value of the token + * @param TokenType $type the type of the token + * @param string $value the value of the token + */ + public function getNextOfTypeAndValue(TokenType $type, string $value): Token|null + { + for (; $this->idx < $this->count; ++$this->idx) { + if (($this->tokens[$this->idx]->type === $type) && ($this->tokens[$this->idx]->value === $value)) { + return $this->tokens[$this->idx++]; + } + } + + return null; + } + + /** + * Gets the next token. * - * @return Token + * @param TokenType $type the type of the token + * @param int $flag the flag of the token */ - public function getNextOfTypeAndValue($type, $value) + public function getNextOfTypeAndFlag(TokenType $type, int $flag): Token|null { for (; $this->idx < $this->count; ++$this->idx) { - if (($this->tokens[$this->idx]->type === $type) - && ($this->tokens[$this->idx]->value === $value) - ) { + if (($this->tokens[$this->idx]->type === $type) && ($this->tokens[$this->idx]->flags === $flag)) { return $this->tokens[$this->idx++]; } } @@ -148,56 +180,57 @@ public function getNextOfTypeAndValue($type, $value) } /** - * Sets an value inside the container. + * Sets a Token inside the list of tokens. + * When defined, offset must be positive otherwise the offset is ignored. + * If the offset is not defined (like in array_push) or if it is greater than the number of Tokens already stored, + * the Token is appended to the list of tokens. * - * @param int $offset the offset to be set - * @param Token $value the token to be saved + * @param int|null $offset the offset to be set. Must be positive otherwise, nothing will be stored. + * @param Token $value the token to be saved */ - public function offsetSet($offset, $value) + public function offsetSet(mixed $offset, mixed $value): void { - if ($offset === null) { + if ($offset === null || $offset >= $this->count) { $this->tokens[$this->count++] = $value; - } else { + } elseif ($offset >= 0) { $this->tokens[$offset] = $value; } } /** - * Gets a value from the container. + * Gets a Token from the list of tokens. + * If the offset is negative or above the number of tokens set in the list, will return null. * * @param int $offset the offset to be returned - * - * @return Token */ - public function offsetGet($offset) + public function offsetGet(mixed $offset): Token|null { - return $offset < $this->count ? $this->tokens[$offset] : null; + return $this->offsetExists($offset) ? $this->tokens[$offset] : null; } /** * Checks if an offset was previously set. + * If the offset is negative or above the number of tokens set in the list, will return false. * * @param int $offset the offset to be checked - * - * @return bool */ - public function offsetExists($offset) + public function offsetExists(mixed $offset): bool { - return $offset < $this->count; + return $offset >= 0 && $offset < $this->count; } /** - * Unsets the value of an offset. + * Unsets the value of an offset, if the offset exists. * * @param int $offset the offset to be unset */ - public function offsetUnset($offset) + public function offsetUnset(mixed $offset): void { - unset($this->tokens[$offset]); - --$this->count; - for ($i = $offset; $i < $this->count; ++$i) { - $this->tokens[$i] = $this->tokens[$i + 1]; + if (! $this->offsetExists($offset)) { + return; } - unset($this->tokens[$this->count]); + + array_splice($this->tokens, $offset, 1); + --$this->count; } } diff --git a/src/Tools/ContextGenerator.php b/src/Tools/ContextGenerator.php new file mode 100644 index 000000000..86b09b475 --- /dev/null +++ b/src/Tools/ContextGenerator.php @@ -0,0 +1,394 @@ + + */ + public static array $labelsFlags = [ + '(R)' => Token::FLAG_KEYWORD_RESERVED, + '(D)' => Token::FLAG_KEYWORD_DATA_TYPE, + '(K)' => Token::FLAG_KEYWORD_KEY, + '(F)' => Token::FLAG_KEYWORD_FUNCTION, + ]; + + /** + * Documentation links for each context. + * + * @var array + */ + public static array $links = [ + 'MySql50000' => 'https://dev.mysql.com/doc/refman/5.0/en/keywords.html', + 'MySql50100' => 'https://dev.mysql.com/doc/refman/5.1/en/keywords.html', + 'MySql50500' => 'https://dev.mysql.com/doc/refman/5.5/en/keywords.html', + 'MySql50600' => 'https://dev.mysql.com/doc/refman/5.6/en/keywords.html', + 'MySql50700' => 'https://dev.mysql.com/doc/refman/5.7/en/keywords.html', + 'MySql80000' => 'https://dev.mysql.com/doc/refman/8.0/en/keywords.html', + 'MySql80100' => 'https://dev.mysql.com/doc/refman/8.1/en/keywords.html', + 'MySql80200' => 'https://dev.mysql.com/doc/refman/8.2/en/keywords.html', + 'MySql80300' => 'https://dev.mysql.com/doc/refman/8.3/en/keywords.html', + 'MySql80400' => 'https://dev.mysql.com/doc/refman/8.4/en/keywords.html', + 'MySql90000' => 'https://dev.mysql.com/doc/refman/9.0/en/keywords.html', + 'MySql90100' => 'https://dev.mysql.com/doc/refman/9.1/en/keywords.html', + 'MariaDb100000' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100100' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100200' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100300' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100400' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100500' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100600' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100700' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100800' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100900' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb101000' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb101100' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110000' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110100' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110200' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110300' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110400' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110500' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110600' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb110700' => 'https://mariadb.com/kb/en/reserved-words/', + ]; + + /** + * Reversed const <=> int from {@see Token} class to write the constant name instead of its value. + * + * @var array + */ + private static array $typesNumToConst = [ + 1 => 'Token::FLAG_KEYWORD', + 2 => 'Token::FLAG_KEYWORD_RESERVED', + 4 => 'Token::FLAG_KEYWORD_COMPOSED', + 8 => 'Token::FLAG_KEYWORD_DATA_TYPE', + 16 => 'Token::FLAG_KEYWORD_KEY', + 32 => 'Token::FLAG_KEYWORD_FUNCTION', + ]; + + /** + * The template of a context. + * + * Parameters: + * 1 - name + * 2 - class + * 3 - link + * 4 - keywords array + */ + public const TEMPLATE = <<<'PHP' + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ +%4$s ]; +} + +PHP; + + /** + * Sorts an array of words. + * + * @param array> $arr + * + * @return array> + */ + public static function sortWords(array &$arr): array + { + ksort($arr); + foreach ($arr as &$words) { + sort($words, SORT_STRING); + } + + return $arr; + } + + /** + * Reads a list of words and sorts it by type, length and keyword. + * + * @param list $files + * + * @return array> + */ + public static function readWords(array $files): array + { + /** @psalm-var list $words */ + $words = []; + foreach ($files as $file) { + $words = array_merge($words, file($file)); + } + + /** @var array $types */ + $types = []; + + for ($i = 0, $count = count($words); $i !== $count; ++$i) { + $value = trim($words[$i]); + if ($value === '') { + continue; + } + + $type = Token::FLAG_KEYWORD; + + // Reserved, data types, keys, functions, etc. keywords. + foreach (static::$labelsFlags as $label => $flags) { + if (! str_contains($value, $label)) { + continue; + } + + $type |= $flags; + $value = trim(str_replace($label, '', $value)); + } + + // Composed keyword. + if (str_contains($value, ' ')) { + $type |= Token::FLAG_KEYWORD_RESERVED; + $type |= Token::FLAG_KEYWORD_COMPOSED; + } + + $value = strtoupper($value); + if (! isset($types[$value])) { + $types[$value] = $type; + } else { + $types[$value] |= $type; + } + } + + // Prepare an array in a way to sort by type, then by word. + $ret = []; + foreach ($types as $word => $type) { + $ret[$type][] = $word; + } + + return static::sortWords($ret); + } + + /** + * Prints an array of a words in PHP format. + * + * @param array> $words the list of words to be formatted + */ + public static function printWords(array $words): string + { + $ret = ''; + foreach ($words as $type => $wordsByType) { + foreach ($wordsByType as $word) { + $ret .= sprintf(" '%s' => %s,\n", $word, self::translateIntTypeToTextConstant($type)); + } + } + + return $ret; + } + + private static function translateIntTypeToTextConstant(int $type): string + { + $matchingFlags = array_filter( + self::$typesNumToConst, + static function (int $num) use ($type): bool { + return ($type & $num) !== 0; + }, + ARRAY_FILTER_USE_KEY, + ); + + return implode(' | ', $matchingFlags); + } + + /** + * Generates a context's class. + * + * @param array>> $options the options for this context + * @psalm-param array{ + * name: string, + * class: string, + * link: string, + * keywords: array> + * } $options + */ + public static function generate(array $options): string + { + $options['keywords'] = static::printWords($options['keywords']); + + return sprintf(self::TEMPLATE, $options['name'], $options['class'], $options['link'], $options['keywords']); + } + + /** + * Formats context name. + * + * @param string $name name to format + */ + public static function formatName(string $name): string + { + /* Split name and version */ + $parts = []; + if (preg_match('/^(\D+)(\d+)$/', $name, $parts) === 0) { + return $name; + } + + /* Format name */ + $base = $parts[1]; + if ($base === 'MySql') { + $base = 'MySQL'; + } elseif ($base === 'MariaDb') { + $base = 'MariaDB'; + } + + /* Parse version to array */ + $versionString = $parts[2]; + if (strlen($versionString) % 2 === 1) { + $versionString = '0' . $versionString; + } + + $version = array_map('intval', str_split($versionString, 2)); + /* Remove trailing zero */ + if ($version[count($version) - 1] === 0) { + $version = array_slice($version, 0, -1); + } + + /* Create name */ + return $base . ' ' . implode('.', $version); + } + + /** + * Builds a test. + * + * Reads the input file, generates the data and writes it back. + * + * @param string $input the input file + * @param string $output the output directory + */ + public static function build(string $input, string $output): void + { + /** + * The directory that contains the input file. + * + * Used to include common files. + */ + $directory = dirname($input) . '/'; + + /** + * The name of the file that contains the context. + */ + $file = basename($input); + + /** + * The name of the context. + */ + $name = substr($file, 0, -4); + + /** + * The name of the class that defines this context. + */ + $class = 'Context' . $name; + + /** + * The formatted name of this context. + */ + $formattedName = static::formatName($name); + + file_put_contents( + $output . '/' . $class . '.php', + static::generate( + [ + 'name' => $formattedName, + 'class' => $class, + 'link' => static::$links[$name], + 'keywords' => static::readWords( + [ + $directory . '_common.txt', + $directory . '_functions' . $file, + $directory . $file, + ], + ), + ], + ), + ); + } + + /** + * Generates recursively all tests preserving the directory structure. + * + * @param string $input the input directory + * @param string $output the output directory + */ + public static function buildAll(string $input, string $output): void + { + $files = scandir($input); + + foreach ($files as $file) { + // Skipping current and parent directories. + // Skipping _functions* and _common.txt files + if (($file[0] === '.') || ($file[0] === '_')) { + continue; + } + + // Skipping README.md + if ($file === 'README.md') { + continue; + } + + // Building the context. + echo sprintf("Building context for %s...\n", $file); + static::build($input . '/' . $file, $output); + } + } +} diff --git a/src/Tools/CustomJsonSerializer.php b/src/Tools/CustomJsonSerializer.php new file mode 100644 index 000000000..d05f0f0bc --- /dev/null +++ b/src/Tools/CustomJsonSerializer.php @@ -0,0 +1,53 @@ + + */ + // phpcs:ignore SlevomatCodingStandard.TypeHints + protected function extractObjectData($value, $ref, $properties): array + { + $data = []; + foreach ($properties as $property) { + if (in_array($property, self::SKIP_PROPERTIES, true)) { + continue; + } + + try { + $propRef = $ref->getProperty($property); + $propRef->setAccessible(true); + $data[$property] = $propRef->getValue($value); + } catch (ReflectionException) { + $data[$property] = $value->$property; + } + } + + return $data; + } +} diff --git a/src/Tools/TestGenerator.php b/src/Tools/TestGenerator.php new file mode 100644 index 000000000..ec032b72f --- /dev/null +++ b/src/Tools/TestGenerator.php @@ -0,0 +1,256 @@ +>>|null> + */ + public static function generate(string $query, string $type = 'parser'): array + { + /** + * Lexer used for tokenizing the query. + */ + $lexer = new Lexer($query); + + /** + * Parsed used for analyzing the query. + * A new instance of parser is generated only if the test requires. + */ + $parser = $type === 'parser' ? new Parser($lexer->list) : null; + + /** + * Lexer's errors. + */ + $lexerErrors = []; + + /** + * Parser's errors. + */ + $parserErrors = []; + + // Both the lexer and the parser construct exception for errors. + // Usually, exceptions contain a full stack trace and other details that + // are not required. + // The code below extracts only the relevant information. + + // Extracting lexer's errors. + if (! empty($lexer->errors)) { + /** @var LexerException $err */ + foreach ($lexer->errors as $err) { + $lexerErrors[] = [ + $err->getMessage(), + $err->ch, + $err->pos, + $err->getCode(), + ]; + } + + $lexer->errors = []; + } + + // Extracting parser's errors. + if (! empty($parser->errors)) { + /** @var ParserException $err */ + foreach ($parser->errors as $err) { + $parserErrors[] = [ + $err->getMessage(), + $err->token, + $err->getCode(), + ]; + } + + $parser->errors = []; + } + + return [ + 'query' => $query, + 'lexer' => $lexer, + 'parser' => $parser, + 'errors' => [ + 'lexer' => $lexerErrors, + 'parser' => $parserErrors, + ], + ]; + } + + /** + * Builds a test. + * + * Reads the input file, generates the data and writes it back. + * + * @param string $type the type of this test + * @param string $input the input file + * @param string $output the output file + * @param string $debug the debug file + * @param bool $ansi activate quotes ANSI mode + */ + public static function build( + string $type, + string $input, + string $output, + string|null $debug = null, + bool $ansi = false, + ): void { + // Support query types: `lexer` / `parser`. + if (! in_array($type, ['lexer', 'parser'])) { + throw new Exception('Unknown test type (expected `lexer` or `parser`).'); + } + + /** + * The query that is used to generate the test. + */ + $query = file_get_contents($input); + + // There is no point in generating a test without a query. + if (empty($query)) { + throw new Exception('No input query specified.'); + } + + if ($ansi === true) { + // set ANSI_QUOTES for ansi tests + Context::setMode(Context::SQL_MODE_ANSI_QUOTES); + } + + $mariaDbPos = strpos($input, '_mariadb_'); + if ($mariaDbPos !== false) {// Keep in sync with TestCase.php + // set context + $mariaDbVersion = (int) substr($input, $mariaDbPos + 9, 6); + Context::load('MariaDb' . $mariaDbVersion); + } else { + // Load the default context to be sure there is no side effects + Context::load(); + } + + $test = static::generate($query, $type); + + // unset mode, reset to default every time, to be sure + Context::setMode(); + $serializer = new CustomJsonSerializer(null, [ + UtfString::class => new UtfStringSerializer(), + ]); + // Writing test's data. + $encoded = $serializer->serialize($test); + + $encoded = (string) json_encode( + json_decode($encoded), + JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION | JSON_UNESCAPED_SLASHES, + ); + + // Remove the project path from .out file, it changes for each dev + $projectFolder = dirname(__DIR__, 2);// Jump to root + $encoded = str_replace($projectFolder, '', $encoded); + + file_put_contents($output, $encoded); + + // Dumping test's data in human readable format too (if required). + if (empty($debug)) { + return; + } + + file_put_contents($debug, print_r($test, true)); + } + + /** + * Generates recursively all tests preserving the directory structure. + * + * @param string $input the input directory + * @param string $output the output directory + */ + public static function buildAll(string $input, string $output, mixed $debug = null): void + { + $files = scandir($input); + + foreach ($files as $file) { + // Skipping current and parent directories. + if (($file === '.') || ($file === '..')) { + continue; + } + + // Appending the filename to directories. + $inputFile = $input . '/' . $file; + $outputFile = $output . '/' . $file; + $debugFile = $debug !== null ? $debug . '/' . $file : null; + + if (is_dir($inputFile)) { + // Creating required directories to maintain the structure. + // Ignoring errors if the folder structure exists already. + if (! is_dir($outputFile)) { + mkdir($outputFile); + } + + if (($debug !== null) && (! is_dir($debugFile))) { + mkdir($debugFile); + } + + // Generating tests recursively. + static::buildAll($inputFile, $outputFile, $debugFile); + } elseif (str_ends_with($inputFile, '.in')) { + // Generating file names by replacing `.in` with `.out` and + // `.debug`. + $outputFile = substr($outputFile, 0, -3) . '.out'; + if ($debug !== null) { + $debugFile = substr($debugFile, 0, -3) . '.debug'; + } + + // Building the test. + if (! file_exists($outputFile)) { + echo sprintf("Building test for %s...\n", $inputFile); + static::build( + str_contains($inputFile, 'lex') ? 'lexer' : 'parser', + $inputFile, + $outputFile, + $debugFile, + str_contains($inputFile, 'ansi'), + ); + } else { + echo sprintf("Test for %s already built!\n", $inputFile); + } + } + } + } +} diff --git a/src/Translator.php b/src/Translator.php index a169632b0..b1e07a65a 100644 --- a/src/Translator.php +++ b/src/Translator.php @@ -1,40 +1,53 @@ setlocale( - self::$loader->detectlocale() - ); + if (self::$locale === '') { + self::$locale = self::$loader->detectlocale(); + } + + self::$loader->setlocale(self::$locale); // Set default text domain self::$loader->textdomain('sqlparser'); @@ -43,10 +56,12 @@ public static function load() self::$loader->bindtextdomain('sqlparser', __DIR__ . '/../locale/'); } - if (is_null(self::$translator)) { - // Get translator - self::$translator = self::$loader->getTranslator(); + if (isset(self::$translator)) { + return; } + + // Get translator + self::$translator = self::$loader->getTranslator(); } /** @@ -56,14 +71,25 @@ public static function load() * * @return string translated string (or original, if not found) */ - public static function gettext($msgid) + public static function gettext(string $msgid): string { - if (! class_exists('\PhpMyAdmin\MoTranslator\Loader', true)) { + if (! class_exists(Loader::class)) { return $msgid; } self::load(); + assert(self::$translator instanceof MoTranslator); return self::$translator->gettext($msgid); } + + public static function setLocale(string $locale): void + { + self::$locale = $locale; + } + + public static function getLocale(): string + { + return self::$locale; + } } diff --git a/src/UtfString.php b/src/UtfString.php index 9e6e55bba..c2a750b00 100644 --- a/src/UtfString.php +++ b/src/UtfString.php @@ -1,84 +1,48 @@ */ -class UtfString implements \ArrayAccess +class UtfString implements ArrayAccess, Stringable { /** - * The raw, multi-byte string. + * The multi-byte characters. * - * @var string + * @var list */ - public $str = ''; + public array $characters; - /** - * The index of current byte. - * - * For ASCII strings, the byte index is equal to the character index. - * - * @var int - */ - public $byteIdx = 0; - - /** - * The index of current character. - * - * For non-ASCII strings, some characters occupy more than one byte and - * the character index will have a lower value than the byte index. - * - * @var int - */ - public $charIdx = 0; - - /** - * The length of the string (in bytes). - * - * @var int - */ - public $byteLen = 0; - - /** - * The length of the string (in characters). - * - * @var int - */ - public $charLen = 0; - - /** - * Constructor. - * - * @param string $str the string - */ - public function __construct($str) + /** @param string $str the string */ + public function __construct(string $str) { - $this->str = $str; - $this->byteIdx = 0; - $this->charIdx = 0; - $this->byteLen = mb_strlen($str, '8bit'); - if (! mb_check_encoding($str, 'UTF-8')) { - $this->charLen = 0; + if (mb_check_encoding($str, 'UTF-8')) { + $this->characters = mb_str_split($str, 1, 'UTF-8'); } else { - $this->charLen = mb_strlen($str, 'UTF-8'); + $this->characters = []; } } @@ -86,53 +50,20 @@ public function __construct($str) * Checks if the given offset exists. * * @param int $offset the offset to be checked - * - * @return bool */ - public function offsetExists($offset) + public function offsetExists(mixed $offset): bool { - return ($offset >= 0) && ($offset < $this->charLen); + return $offset >= 0 && $offset < count($this->characters); } /** * Gets the character at given offset. * * @param int $offset the offset to be returned - * - * @return string */ - public function offsetGet($offset) + public function offsetGet(mixed $offset): string { - if (($offset < 0) || ($offset >= $this->charLen)) { - return null; - } - - $delta = $offset - $this->charIdx; - - if ($delta > 0) { - // Fast forwarding. - while ($delta-- > 0) { - $this->byteIdx += static::getCharLength($this->str[$this->byteIdx]); - ++$this->charIdx; - } - } elseif ($delta < 0) { - // Rewinding. - while ($delta++ < 0) { - do { - $byte = ord($this->str[--$this->byteIdx]); - } while (($byte >= 128) && ($byte < 192)); - --$this->charIdx; - } - } - - $bytesCount = static::getCharLength($this->str[$this->byteIdx]); - - $ret = ''; - for ($i = 0; $bytesCount-- > 0; ++$i) { - $ret .= $this->str[$this->byteIdx + $i]; - } - - return $ret; + return $this->characters[$offset] ?? ''; } /** @@ -141,11 +72,11 @@ public function offsetGet($offset) * @param int $offset the offset to be set * @param string $value the value to be set * - * @throws \Exception not implemented + * @throws Exception not implemented. */ - public function offsetSet($offset, $value) + public function offsetSet(mixed $offset, mixed $value): void { - throw new \Exception('Not implemented.'); + throw new Exception('Not implemented.'); } /** @@ -153,61 +84,26 @@ public function offsetSet($offset, $value) * * @param int $offset the value to be unset * - * @throws \Exception not implemented - */ - public function offsetUnset($offset) - { - throw new \Exception('Not implemented.'); - } - - /** - * Gets the length of an UTF-8 character. - * - * According to RFC 3629, a UTF-8 character can have at most 4 bytes. - * However, this implementation supports UTF-8 characters containing up to 6 - * bytes. - * - * @param string $byte the byte to be analyzed - * - * @see https://tools.ietf.org/html/rfc3629 - * - * @return int + * @throws Exception not implemented. */ - public static function getCharLength($byte) + public function offsetUnset(mixed $offset): void { - $byte = ord($byte); - if ($byte < 128) { - return 1; - } elseif ($byte < 224) { - return 2; - } elseif ($byte < 240) { - return 3; - } elseif ($byte < 248) { - return 4; - } elseif ($byte < 252) { - return 5; // unofficial - } - - return 6; // unofficial + throw new Exception('Not implemented.'); } /** * Returns the length in characters of the string. - * - * @return int */ - public function length() + public function length(): int { - return $this->charLen; + return count($this->characters); } /** * Returns the contained string. - * - * @return string */ - public function __toString() + public function __toString(): string { - return $this->str; + return implode('', $this->characters); } } diff --git a/src/Utils/BufferedQuery.php b/src/Utils/BufferedQuery.php index c2dd07448..f7e552374 100644 --- a/src/Utils/BufferedQuery.php +++ b/src/Utils/BufferedQuery.php @@ -1,118 +1,92 @@ + * @psalm-var array{delimiter?: non-empty-string, parse_delimiter?: bool, add_delimiter?: bool} */ - public $options = []; + public array $options = []; /** * The last delimiter used. - * - * @var string */ - public $delimiter; + public string $delimiter; /** * The length of the delimiter. - * - * @var int */ - public $delimiterLen; + public int $delimiterLen; /** * The current status of the parser. - * - * @var int */ - public $status; + public int|null $status = null; /** * The last incomplete query that was extracted. - * - * @var string */ - public $current = ''; + public string $current = ''; /** - * Constructor. - * - * @param string $query the query to be parsed - * @param array $options the options of this parser + * @param string $query the query to be parsed + * @param array $options the options of this parser + * @psalm-param array{delimiter?: non-empty-string, parse_delimiter?: bool, add_delimiter?: bool} $options */ - public function __construct($query = '', array $options = []) + public function __construct(string $query = '', array $options = []) { // Merges specified options with defaults. $this->options = array_merge( [ - /* - * The starting delimiter. - * - * @var string - */ + // The starting delimiter. 'delimiter' => ';', - - /* - * Whether `DELIMITER` statements should be parsed. - * - * @var bool - */ + // Whether `DELIMITER` statements should be parsed. 'parse_delimiter' => false, - - /* - * Whether a delimiter should be added at the end of the - * statement. - * - * @var bool - */ + // Whether a delimiter should be added at the end of the statement. 'add_delimiter' => false, ], - $options + $options, ); $this->query = $query; @@ -123,10 +97,8 @@ public function __construct($query = '', array $options = []) * Sets the delimiter. * * Used to update the length of it too. - * - * @param string $delimiter */ - public function setDelimiter($delimiter) + public function setDelimiter(string $delimiter): void { $this->delimiter = $delimiter; $this->delimiterLen = strlen($delimiter); @@ -136,10 +108,8 @@ public function setDelimiter($delimiter) * Extracts a statement from the buffer. * * @param bool $end whether the end of the buffer was reached - * - * @return string */ - public function extract($end = false) + public function extract(bool $end = false): string|false { /** * The last parsed position. @@ -148,7 +118,7 @@ public function extract($end = false) * outside this method and there is probably a (minor) performance * improvement to it. * - * @var int + * @var int $i */ static $i = 0; @@ -158,8 +128,6 @@ public function extract($end = false) /** * The length of the buffer. - * - * @var int */ $len = strlen($this->query); @@ -178,8 +146,6 @@ public function extract($end = false) * * Those extra characters are required only if there is more data * expected (the end of the buffer was not reached). - * - * @var int */ $loopLen = $end ? $len : $len - 16; @@ -191,48 +157,59 @@ public function extract($end = false) * treated differently, because of the preceding backslash, it will * be ignored. */ - if ((($this->status & static::STATUS_COMMENT) === 0) && ($this->query[$i] === '\\')) { - $this->current .= $this->query[$i] . $this->query[++$i]; + if ((($this->status & self::STATUS_COMMENT) === 0) && ($this->query[$i] === '\\')) { + $this->current .= $this->query[$i] . ($i + 1 < $len ? $this->query[++$i] : ''); continue; } /* * Handling special parses statuses. */ - if ($this->status === static::STATUS_STRING_SINGLE_QUOTES) { + if ($this->status === self::STATUS_STRING_SINGLE_QUOTES) { // Single-quoted strings like 'foo'. if ($this->query[$i] === '\'') { $this->status = 0; } + $this->current .= $this->query[$i]; continue; - } elseif ($this->status === static::STATUS_STRING_DOUBLE_QUOTES) { + } + + if ($this->status === self::STATUS_STRING_DOUBLE_QUOTES) { // Double-quoted strings like "bar". if ($this->query[$i] === '"') { $this->status = 0; } + $this->current .= $this->query[$i]; continue; - } elseif ($this->status === static::STATUS_STRING_BACKTICK) { + } + + if ($this->status === self::STATUS_STRING_BACKTICK) { if ($this->query[$i] === '`') { $this->status = 0; } + $this->current .= $this->query[$i]; continue; - } elseif (($this->status === static::STATUS_COMMENT_BASH) - || ($this->status === static::STATUS_COMMENT_SQL) - ) { + } + + if (($this->status === self::STATUS_COMMENT_BASH) || ($this->status === self::STATUS_COMMENT_SQL)) { // Bash-like (#) or SQL-like (-- ) comments end in new line. if ($this->query[$i] === "\n") { $this->status = 0; } + $this->current .= $this->query[$i]; continue; - } elseif ($this->status === static::STATUS_COMMENT_C) { + } + + if ($this->status === self::STATUS_COMMENT_C) { // C-like comments end in */. if (($this->query[$i - 1] === '*') && ($this->query[$i] === '/')) { $this->status = 0; } + $this->current .= $this->query[$i]; continue; } @@ -241,15 +218,19 @@ public function extract($end = false) * Checking if a string started. */ if ($this->query[$i] === '\'') { - $this->status = static::STATUS_STRING_SINGLE_QUOTES; + $this->status = self::STATUS_STRING_SINGLE_QUOTES; $this->current .= $this->query[$i]; continue; - } elseif ($this->query[$i] === '"') { - $this->status = static::STATUS_STRING_DOUBLE_QUOTES; + } + + if ($this->query[$i] === '"') { + $this->status = self::STATUS_STRING_DOUBLE_QUOTES; $this->current .= $this->query[$i]; continue; - } elseif ($this->query[$i] === '`') { - $this->status = static::STATUS_STRING_BACKTICK; + } + + if ($this->query[$i] === '`') { + $this->status = self::STATUS_STRING_BACKTICK; $this->current .= $this->query[$i]; continue; } @@ -258,20 +239,24 @@ public function extract($end = false) * Checking if a comment started. */ if ($this->query[$i] === '#') { - $this->status = static::STATUS_COMMENT_BASH; + $this->status = self::STATUS_COMMENT_BASH; $this->current .= $this->query[$i]; continue; - } elseif ($i + 2 < $len) { - if (($this->query[$i] === '-') - && ($this->query[$i + 1] === '-') - && Context::isWhitespace($this->query[$i + 2])) { - $this->status = static::STATUS_COMMENT_SQL; + } + + if ($i + 2 < $len) { + if ( + ($this->query[$i] === '-') + && ($this->query[$i + 1] === '-') + && Context::isWhitespace($this->query[$i + 2]) + ) { + $this->status = self::STATUS_COMMENT_SQL; $this->current .= $this->query[$i]; continue; - } elseif (($this->query[$i] === '/') - && ($this->query[$i + 1] === '*') - && ($this->query[$i + 2] !== '!')) { - $this->status = static::STATUS_COMMENT_C; + } + + if (($this->query[$i] === '/') && ($this->query[$i + 1] === '*') && ($this->query[$i + 2] !== '!')) { + $this->status = self::STATUS_COMMENT_C; $this->current .= $this->query[$i]; continue; } @@ -289,7 +274,8 @@ public function extract($end = false) * it has a special meaning is when it is the beginning of a * statement. This is the reason for the last condition. */ - if (($i + 9 < $len) + if ( + ($i + 9 < $len) && (($this->query[$i] === 'D') || ($this->query[$i] === 'd')) && (($this->query[$i + 1] === 'E') || ($this->query[$i + 1] === 'e')) && (($this->query[$i + 2] === 'L') || ($this->query[$i + 2] === 'l')) @@ -318,8 +304,9 @@ public function extract($end = false) } // Checking if the delimiter definition ended. - if (($delimiter !== '') - && ((($i < $len) && Context::isWhitespace($this->query[$i])) + if ( + ($delimiter !== '') + && (($i < $len) && Context::isWhitespace($this->query[$i]) || (($i === $len) && $end)) ) { // Saving the delimiter. @@ -331,7 +318,7 @@ public function extract($end = false) // Appending the `DELIMITER` statement that was just // found to the current statement. $ret = trim( - $this->current . ' ' . substr($this->query, $iBak, $i - $iBak) + $this->current . ' ' . substr($this->query, $iBak, $i - $iBak), ); } @@ -361,7 +348,8 @@ public function extract($end = false) * There is no point in checking if two strings match if not even * the first letter matches. */ - if (($this->query[$i] === $this->delimiter[0]) + if ( + ($this->query[$i] === $this->delimiter[0]) && (($this->delimiterLen === 1) || (substr($this->query, $i, $this->delimiterLen) === $this->delimiter)) ) { diff --git a/src/Utils/CLI.php b/src/Utils/CLI.php index cd27908b2..f0bf2c27a 100644 --- a/src/Utils/CLI.php +++ b/src/Utils/CLI.php @@ -1,7 +1,5 @@ getopt('', ['lint', 'highlight', 'tokenize']); + if ($params !== false) { + if (isset($params['lint'])) { + return $this->runLint(); + } + + if (isset($params['highlight'])) { + return $this->runHighlight(); + } + + if (isset($params['tokenize'])) { + return $this->runTokenize(); + } + } + + $this->usageLint(); + $this->usageHighlight(); + $this->usageTokenize(); + + return 1; + } + + /** + * @param string[]|false[] $params + * @param string[] $longopts + */ + public function mergeLongOpts(array &$params, array &$longopts): void { foreach ($longopts as $value) { $value = rtrim($value, ':'); - if (isset($params[$value])) { - $params[$value[0]] = $params[$value]; + if (! isset($params[$value])) { + continue; } + + $params[$value[0]] = $params[$value]; } } - public function usageHighlight() + public function usageHighlight(): void { - echo "Usage: highlight-query --query SQL [--format html|cli|text]\n"; - echo " cat file.sql | highlight-query\n"; + $command = 'sql-parser --highlight'; + + echo 'Usage: ' . $command . ' --query SQL [--format html|cli|text] [--ansi]' . "\n"; + echo ' cat file.sql | ' . $command . "\n"; } - public function getopt($opt, $long) + /** + * @param string[] $long + * + * @return string[]|false[]|false + */ + public function getopt(string $opt, array $long): array|false { return getopt($opt, $long); } - public function parseHighlight() + /** @return string[]|false[]|false */ + public function parseHighlight(): array|false { $longopts = [ 'help', 'query:', 'format:', + 'ansi', ]; - $params = $this->getopt( - 'hq:f:', - $longopts - ); + $params = $this->getopt('hq:f:a', $longopts); if ($params === false) { return false; } + $this->mergeLongOpts($params, $longopts); if (! isset($params['f'])) { $params['f'] = 'cli'; } + if (! in_array($params['f'], ['html', 'cli', 'text'])) { echo "ERROR: Invalid value for format!\n"; @@ -67,139 +114,180 @@ public function parseHighlight() return $params; } - public function runHighlight() + public function runHighlight(): int { $params = $this->parseHighlight(); if ($params === false) { return 1; } + if (isset($params['h'])) { $this->usageHighlight(); return 0; } + if (! isset($params['q'])) { - if ($stdIn = $this->readStdin()) { + $stdIn = $this->readStdin(); + + if ($stdIn) { $params['q'] = $stdIn; } } + + if (isset($params['a'])) { + Context::setMode(Context::SQL_MODE_ANSI_QUOTES); + } + if (isset($params['q'])) { echo Formatter::format( $params['q'], - ['type' => $params['f']] + ['type' => $params['f']], ); echo "\n"; return 0; } + echo "ERROR: Missing parameters!\n"; $this->usageHighlight(); return 1; } - public function usageLint() + public function usageLint(): void { - echo "Usage: lint-query --query SQL\n"; - echo " cat file.sql | lint-query\n"; + $command = 'sql-parser --lint'; + + echo 'Usage: ' . $command . ' --query SQL [--ansi]' . "\n"; + echo ' cat file.sql | ' . $command . "\n"; } - public function parseLint() + /** @return string[]|false[]|false */ + public function parseLint(): array|false { $longopts = [ 'help', 'query:', 'context:', + 'ansi', ]; - $params = $this->getopt( - 'hq:c:', - $longopts - ); + $params = $this->getopt('hq:c:a', $longopts); + if ($params === false) { + return false; + } + $this->mergeLongOpts($params, $longopts); return $params; } - public function runLint() + public function runLint(): int { $params = $this->parseLint(); if ($params === false) { return 1; } + if (isset($params['h'])) { $this->usageLint(); return 0; } + if (isset($params['c'])) { Context::load($params['c']); } + if (! isset($params['q'])) { - if ($stdIn = $this->readStdin()) { + $stdIn = $this->readStdin(); + + if ($stdIn) { $params['q'] = $stdIn; } } + + if (isset($params['a'])) { + Context::setMode(Context::SQL_MODE_ANSI_QUOTES); + } + if (isset($params['q'])) { $lexer = new Lexer($params['q'], false); $parser = new Parser($lexer->list); $errors = Error::get([$lexer, $parser]); - if (count($errors) === 0) { + if ($errors === []) { return 0; } + $output = Error::format($errors); echo implode("\n", $output); echo "\n"; return 10; } + echo "ERROR: Missing parameters!\n"; $this->usageLint(); return 1; } - public function usageTokenize() + public function usageTokenize(): void { - echo "Usage: tokenize-query --query SQL\n"; - echo " cat file.sql | tokenize-query\n"; + $command = 'sql-parser --tokenize'; + + echo 'Usage: ' . $command . ' --query SQL [--ansi]' . "\n"; + echo ' cat file.sql | ' . $command . "\n"; } - public function parseTokenize() + /** @return string[]|false[]|false */ + public function parseTokenize(): array|false { $longopts = [ 'help', 'query:', + 'ansi', ]; - $params = $this->getopt( - 'hq:', - $longopts - ); + $params = $this->getopt('hq:a', $longopts); + if ($params === false) { + return false; + } + $this->mergeLongOpts($params, $longopts); return $params; } - public function runTokenize() + public function runTokenize(): int { $params = $this->parseTokenize(); if ($params === false) { return 1; } + if (isset($params['h'])) { $this->usageTokenize(); return 0; } + if (! isset($params['q'])) { - if ($stdIn = $this->readStdin()) { + $stdIn = $this->readStdin(); + + if ($stdIn) { $params['q'] = $stdIn; } } + + if (isset($params['a'])) { + Context::setMode(Context::SQL_MODE_ANSI_QUOTES); + } + if (isset($params['q'])) { $lexer = new Lexer($params['q'], false); foreach ($lexer->list->tokens as $idx => $token) { echo '[TOKEN ', $idx, "]\n"; - echo 'Type = ', $token->type, "\n"; + echo 'Type = ', $token->type->value, "\n"; echo 'Flags = ', $token->flags, "\n"; echo 'Value = '; var_export($token->value); @@ -212,18 +300,29 @@ public function runTokenize() return 0; } + echo "ERROR: Missing parameters!\n"; $this->usageTokenize(); return 1; } - private function readStdin() + public function readStdin(): string|false|null { - stream_set_blocking(STDIN, false); - $stdin = stream_get_contents(STDIN); - // restore-default block-mode setting - stream_set_blocking(STDIN, true); + $read = [STDIN]; + $write = []; + $except = []; + + // Assume there's nothing to be read from STDIN. + $stdin = null; + + // Try to read from STDIN. Wait 0.2 second before timing out. + $result = stream_select($read, $write, $except, 0, 2000); + + if ($result > 0) { + $stdin = stream_get_contents(STDIN); + } + return $stdin; } } diff --git a/src/Utils/Error.php b/src/Utils/Error.php index d0f82edc1..9bf9b8562 100644 --- a/src/Utils/Error.php +++ b/src/Utils/Error.php @@ -1,41 +1,41 @@ $objs objects from where the errors will be extracted * - * @return array Each element of the array represents an error. + * @return array> Each element of the array represents an error. * `$err[0]` holds the error message. * `$err[1]` holds the error code. * `$err[2]` holds the string that caused the issue. * `$err[3]` holds the position of the string. - * (i.e. `array($msg, $code, $str, $pos)`) + * (i.e. `[$msg, $code, $str, $pos]`) */ - public static function get($objs) + public static function get(array $objs): array { $ret = []; foreach ($objs as $obj) { if ($obj instanceof Lexer) { + /** @var LexerException $err */ foreach ($obj->errors as $err) { $ret[] = [ $err->getMessage(), @@ -45,12 +45,13 @@ public static function get($objs) ]; } } elseif ($obj instanceof Parser) { + /** @var ParserException $err */ foreach ($obj->errors as $err) { $ret[] = [ $err->getMessage(), $err->getCode(), - $err->token->token, - $err->token->position, + $err->token?->token ?? '', + $err->token?->position, ]; } } @@ -62,8 +63,8 @@ public static function get($objs) /** * Formats the specified errors. * - * @param array $errors the errors to be formatted - * @param string $format The format of an error. + * @param array> $errors the errors to be formatted + * @param string $format The format of an error. * '$1$d' is replaced by the position of this error. * '$2$s' is replaced by the error message. * '$3$d' is replaced by the error code. @@ -71,12 +72,12 @@ public static function get($objs) * issue. * '$5$d' is replaced by the position of the string. * - * @return array + * @return string[] */ public static function format( - $errors, - $format = '#%1$d: %2$s (near "%4$s" at position %5$d)' - ) { + array $errors, + string $format = '#%1$d: %2$s (near "%4$s" at position %5$d)', + ): array { $ret = []; $i = 0; @@ -87,7 +88,7 @@ public static function format( $err[0], $err[1], htmlspecialchars((string) $err[2]), - $err[3] + $err[3], ); } diff --git a/src/Utils/ForeignKey.php b/src/Utils/ForeignKey.php new file mode 100644 index 000000000..50a08eb2f --- /dev/null +++ b/src/Utils/ForeignKey.php @@ -0,0 +1,23 @@ +>> */ - public $options; + public array $options; /** * Clauses that are usually short. @@ -44,9 +53,9 @@ class Formatter * INSERT INTO foo * VALUES(0, 0, 0),(1, 1, 1) * - * @var array + * @var array */ - public static $SHORT_CLAUSES = [ + public static array $shortClauses = [ 'CREATE' => true, 'INSERT' => true, ]; @@ -56,9 +65,9 @@ class Formatter * * These clauses usually are short and it's nicer to have them inline. * - * @var array + * @var array */ - public static $INLINE_CLAUSES = [ + public static array $inlineClauses = [ 'CREATE' => true, 'INTO' => true, 'LIMIT' => true, @@ -69,11 +78,12 @@ class Formatter 'VALUES' => true, ]; - /** - * Constructor. - * - * @param array $options the formatting options - */ + private const FORMATTERS = [ + 'PARTITION BY', + 'SUBPARTITION BY', + ]; + + /** @param array>> $options the formatting options */ public function __construct(array $options = []) { $this->options = $this->getMergedOptions($options); @@ -82,15 +92,15 @@ public function __construct(array $options = []) /** * The specified formatting options are merged with the default values. * - * @param array $options + * @param array>> $options * - * @return array + * @return array>> */ - private function getMergedOptions(array $options) + protected function getMergedOptions(array $options): array { $options = array_merge( $this->getDefaultOptions(), - $options + $options, ); if (isset($options['formats'])) { @@ -99,11 +109,11 @@ private function getMergedOptions(array $options) $options['formats'] = $this->getDefaultFormats(); } - if (is_null($options['line_ending'])) { + if ($options['line_ending'] === null) { $options['line_ending'] = $options['type'] === 'html' ? '
' : "\n"; } - if (is_null($options['indentation'])) { + if ($options['indentation'] === null) { $options['indentation'] = $options['type'] === 'html' ? '    ' : ' '; } @@ -116,9 +126,18 @@ private function getMergedOptions(array $options) /** * The default formatting options. * - * @return array + * @return array + * @psalm-return array{ + * type: ('cli'|'text'), + * line_ending: null, + * indentation: null, + * remove_comments: false, + * clause_newline: true, + * parts_newline: true, + * indent_parts: true + * } */ - protected function getDefaultOptions() + protected function getDefaultOptions(): array { return [ /* @@ -126,7 +145,7 @@ protected function getDefaultOptions() * * @var string The type ('text', 'cli' or 'html') */ - 'type' => php_sapi_name() === 'cli' ? 'cli' : 'text', + 'type' => PHP_SAPI === 'cli' ? 'cli' : 'text', /* * The line ending used. @@ -176,64 +195,65 @@ protected function getDefaultOptions() /** * The styles used for HTML formatting. - * array($type, $flags, $span, $callback). + * [$type, $flags, $span, $callback]. * - * @return array + * @return array> + * @psalm-return list */ - protected function getDefaultFormats() + protected function getDefaultFormats(): array { return [ [ - 'type' => Token::TYPE_KEYWORD, + 'type' => TokenType::Keyword->value, 'flags' => Token::FLAG_KEYWORD_RESERVED, 'html' => 'class="sql-reserved"', 'cli' => "\x1b[35m", 'function' => 'strtoupper', ], [ - 'type' => Token::TYPE_KEYWORD, + 'type' => TokenType::Keyword->value, 'flags' => 0, 'html' => 'class="sql-keyword"', 'cli' => "\x1b[95m", 'function' => 'strtoupper', ], [ - 'type' => Token::TYPE_COMMENT, + 'type' => TokenType::Comment->value, 'flags' => 0, 'html' => 'class="sql-comment"', 'cli' => "\x1b[37m", 'function' => '', ], [ - 'type' => Token::TYPE_BOOL, + 'type' => TokenType::Bool->value, 'flags' => 0, 'html' => 'class="sql-atom"', 'cli' => "\x1b[36m", 'function' => 'strtoupper', ], [ - 'type' => Token::TYPE_NUMBER, + 'type' => TokenType::Number->value, 'flags' => 0, 'html' => 'class="sql-number"', 'cli' => "\x1b[92m", 'function' => 'strtolower', ], [ - 'type' => Token::TYPE_STRING, + 'type' => TokenType::String->value, 'flags' => 0, 'html' => 'class="sql-string"', 'cli' => "\x1b[91m", 'function' => '', ], [ - 'type' => Token::TYPE_SYMBOL, + 'type' => TokenType::Symbol->value, 'flags' => Token::FLAG_SYMBOL_PARAMETER, 'html' => 'class="sql-parameter"', 'cli' => "\x1b[31m", 'function' => '', ], [ - 'type' => Token::TYPE_SYMBOL, + 'type' => TokenType::Symbol->value, 'flags' => 0, 'html' => 'class="sql-variable"', 'cli' => "\x1b[36m", @@ -242,7 +262,13 @@ protected function getDefaultFormats() ]; } - private static function mergeFormats(array $formats, array $newFormats) + /** + * @param array> $formats + * @param array> $newFormats + * + * @return array> + */ + private static function mergeFormats(array $formats, array $newFormats): array { $added = []; $integers = [ @@ -258,34 +284,41 @@ private static function mergeFormats(array $formats, array $newFormats) /* Sanitize the array so that we do not have to care later */ foreach ($newFormats as $j => $new) { foreach ($integers as $name) { - if (! isset($new[$name])) { - $newFormats[$j][$name] = 0; + if (isset($new[$name])) { + continue; } + + $newFormats[$j][$name] = 0; } + foreach ($strings as $name) { - if (! isset($new[$name])) { - $newFormats[$j][$name] = ''; + if (isset($new[$name])) { + continue; } + + $newFormats[$j][$name] = ''; } } /* Process changes to existing formats */ foreach ($formats as $i => $original) { foreach ($newFormats as $j => $new) { - if ($new['type'] === $original['type'] - && $original['flags'] === $new['flags'] - ) { - $formats[$i] = $new; - $added[] = $j; + if ($new['type'] !== $original['type'] || $original['flags'] !== $new['flags']) { + continue; } + + $formats[$i] = $new; + $added[] = $j; } } /* Add not already handled formats */ foreach ($newFormats as $j => $new) { - if (! in_array($j, $added)) { - $formats[] = $new; + if (in_array($j, $added)) { + continue; } + + $formats[] = $new; } return $formats; @@ -295,73 +328,53 @@ private static function mergeFormats(array $formats, array $newFormats) * Formats the given list of tokens. * * @param TokensList $list the list of tokens - * - * @return string */ - public function formatList($list) + public function formatList(TokensList $list): string { /** * The query to be returned. - * - * @var string */ $ret = ''; /** * The indentation level. - * - * @var int */ $indent = 0; /** * Whether the line ended. - * - * @var bool */ $lineEnded = false; /** * Whether current group is short (no linebreaks). - * - * @var bool */ $shortGroup = false; /** * The name of the last clause. - * - * @var string */ $lastClause = ''; /** * A stack that keeps track of the indentation level every time a new * block is found. - * - * @var array */ $blocksIndentation = []; /** * A stack that keeps track of the line endings every time a new block * is found. - * - * @var array */ $blocksLineEndings = []; /** * Whether clause's options were formatted. - * - * @var bool */ $formattedOptions = false; /** * Previously parsed token. - * - * @var Token|null */ $prev = null; @@ -372,8 +385,6 @@ public function formatList($list) for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. - * - * @var Token */ $curr = $list->tokens[$list->idx]; if ($list->idx + 1 < $list->count) { @@ -382,20 +393,22 @@ public function formatList($list) $next = null; } - if ($curr->type === Token::TYPE_WHITESPACE) { + if ($curr->type === TokenType::Whitespace) { // Keep linebreaks before and after comments - if (strpos($curr->token, "\n") !== false && ( - ($prev !== null && $prev->type === Token::TYPE_COMMENT) || - ($next !== null && $next->type === Token::TYPE_COMMENT) + if ( + str_contains($curr->token, "\n") && ( + ($prev !== null && $prev->type === TokenType::Comment) || + ($next !== null && $next->type === TokenType::Comment) ) ) { $lineEnded = true; } + // Whitespaces are skipped because the formatter adds its own. continue; } - if ($curr->type === Token::TYPE_COMMENT && $this->options['remove_comments']) { + if ($curr->type === TokenType::Comment && $this->options['remove_comments']) { // Skip Comments if option `remove_comments` is enabled continue; } @@ -409,15 +422,13 @@ public function formatList($list) } // The options of a clause should stay on the same line and everything that follows. - if ($this->options['parts_newline'] + if ( + $this->options['parts_newline'] && ! $formattedOptions - && empty(self::$INLINE_CLAUSES[$lastClause]) + && empty(self::$inlineClauses[$lastClause]) && ( - $curr->type !== Token::TYPE_KEYWORD - || ( - $curr->type === Token::TYPE_KEYWORD - && $curr->flags & Token::FLAG_KEYWORD_FUNCTION - ) + $curr->type !== TokenType::Keyword + || ($curr->flags & Token::FLAG_KEYWORD_FUNCTION) ) ) { $formattedOptions = true; @@ -426,8 +437,13 @@ public function formatList($list) } // Checking if this clause ended. - if ($isClause = static::isClause($curr)) { - if (($isClause === 2 || $this->options['clause_newline']) && empty(self::$SHORT_CLAUSES[$lastClause])) { + $isClause = static::isClause($curr); + + if ($isClause !== false) { + if ( + ($isClause === 2 || $this->options['clause_newline']) + && empty(self::$shortClauses[$lastClause]) + ) { $lineEnded = true; if ($this->options['parts_newline'] && $indent > 0) { --$indent; @@ -436,32 +452,35 @@ public function formatList($list) } // Inline JOINs - if (($prev->type === Token::TYPE_KEYWORD && isset(JoinKeyword::$JOINS[$prev->value])) - || (in_array($curr->value, ['ON', 'USING'], true) && isset(JoinKeyword::$JOINS[$list->tokens[$list->idx - 2]->value])) - || isset($list->tokens[$list->idx - 4], JoinKeyword::$JOINS[$list->tokens[$list->idx - 4]->value]) - || isset($list->tokens[$list->idx - 6], JoinKeyword::$JOINS[$list->tokens[$list->idx - 6]->value]) + if ( + ($prev->type === TokenType::Keyword && isset(JoinKeyword::JOINS[$prev->value])) + || (in_array($curr->value, ['ON', 'USING'], true) + && isset(JoinKeyword::JOINS[$list->tokens[$list->idx - 2]->value])) + || isset($list->tokens[$list->idx - 4], JoinKeyword::JOINS[$list->tokens[$list->idx - 4]->value]) + || isset($list->tokens[$list->idx - 6], JoinKeyword::JOINS[$list->tokens[$list->idx - 6]->value]) ) { $lineEnded = false; } // Indenting BEGIN ... END blocks. - if ($prev->type === Token::TYPE_KEYWORD && $prev->keyword === 'BEGIN') { + if ($prev->type === TokenType::Keyword && $prev->keyword === 'BEGIN') { $lineEnded = true; $blocksIndentation[] = $indent; ++$indent; - } elseif ($curr->type === Token::TYPE_KEYWORD && $curr->keyword === 'END') { + } elseif ($curr->type === TokenType::Keyword && $curr->keyword === 'END') { $lineEnded = true; $indent = array_pop($blocksIndentation); } // Formatting fragments delimited by comma. - if ($prev->type === Token::TYPE_OPERATOR && $prev->value === ',') { + if ($prev->type === TokenType::Operator && $prev->value === ',') { // Fragments delimited by a comma are broken into multiple // pieces only if the clause is not inlined or this fragment // is between brackets that are on new line. - if (end($blocksLineEndings) === true + if ( + end($blocksLineEndings) === true || ( - empty(self::$INLINE_CLAUSES[$lastClause]) + empty(self::$inlineClauses[$lastClause]) && ! $shortGroup && $this->options['parts_newline'] ) @@ -473,7 +492,7 @@ public function formatList($list) // Handling brackets. // Brackets are indented only if the length of the fragment between // them is longer than 30 characters. - if ($prev->type === Token::TYPE_OPERATOR && $prev->value === '(') { + if ($prev->type === TokenType::Operator && $prev->value === '(') { $blocksIndentation[] = $indent; $shortGroup = true; if (static::getGroupLength($list) > 30) { @@ -481,8 +500,9 @@ public function formatList($list) $lineEnded = true; $shortGroup = false; } + $blocksLineEndings[] = $lineEnded; - } elseif ($curr->type === Token::TYPE_OPERATOR && $curr->value === ')') { + } elseif ($curr->type === TokenType::Operator && $curr->value === ')') { $indent = array_pop($blocksIndentation); $lineEnded |= array_pop($blocksLineEndings); $shortGroup = false; @@ -493,25 +513,24 @@ public function formatList($list) // Finishing the line. if ($lineEnded) { - $ret .= $this->options['line_ending'] - . str_repeat($this->options['indentation'], $indent); - + $ret .= $this->options['line_ending'] . str_repeat($this->options['indentation'], (int) $indent); $lineEnded = false; - } else { - // If the line ended there is no point in adding whitespaces. + } elseif ( + $prev->keyword === 'DELIMITER' + || ! ( + ($prev->type === TokenType::Operator && ($prev->value === '.' || $prev->value === '(')) + // No space after . ( + || ($curr->type === TokenType::Operator + && ($curr->value === '.' || $curr->value === ',' + || $curr->value === '(' || $curr->value === ')')) + // No space before . , ( ) + || $curr->type === TokenType::Delimiter && mb_strlen((string) $curr->value, 'UTF-8') < 2 + ) + ) { + // If the line ended, there is no point in adding whitespaces. // Also, some tokens do not have spaces before or after them. - if (// A space after delimiters that are longer than 2 characters. - $prev->keyword === 'DELIMITER' - || ! ( - ($prev->type === Token::TYPE_OPERATOR && ($prev->value === '.' || $prev->value === '(')) - // No space after . ( - || ($curr->type === Token::TYPE_OPERATOR && ($curr->value === '.' || $curr->value === ',' || $curr->value === '(' || $curr->value === ')')) - // No space before . , ( ) - || $curr->type === Token::TYPE_DELIMITER && mb_strlen((string) $curr->value, 'UTF-8') < 2 - ) - ) { - $ret .= ' '; - } + // A space after delimiters that are longer than 2 characters. + $ret .= ' '; } } @@ -526,7 +545,7 @@ public function formatList($list) return $ret; } - public function escapeConsole($string) + public function escapeConsole(string $string): string { return str_replace( [ @@ -597,7 +616,7 @@ public function escapeConsole($string) '\x1E', '\x1F', ], - $string + $string, ); } @@ -605,39 +624,41 @@ public function escapeConsole($string) * Tries to print the query and returns the result. * * @param Token $token the token to be printed - * - * @return string */ - public function toString($token) + public function toString(Token $token): string { $text = $token->token; static $prev; foreach ($this->options['formats'] as $format) { - if ($token->type === $format['type'] - && ($token->flags & $format['flags']) === $format['flags'] + if ( + $token->type->value !== $format['type'] || ! (($token->flags & $format['flags']) === $format['flags']) ) { - // Running transformation function. - if (! empty($format['function'])) { - $func = $format['function']; - $text = $func($text); - } + continue; + } - // Formatting HTML. - if ($this->options['type'] === 'html') { - return '' . htmlspecialchars($text, ENT_NOQUOTES) . ''; - } elseif ($this->options['type'] === 'cli') { - if ($prev !== $format['cli']) { - $prev = $format['cli']; + // Running transformation function. + if (! empty($format['function'])) { + $func = $format['function']; + $text = $func($text); + } - return $format['cli'] . $this->escapeConsole($text); - } + // Formatting HTML. + if ($this->options['type'] === 'html') { + return '' . htmlspecialchars($text, ENT_NOQUOTES) . ''; + } + + if ($this->options['type'] === 'cli') { + if ($prev !== $format['cli']) { + $prev = $format['cli']; - return $this->escapeConsole($text); + return $format['cli'] . $this->escapeConsole($text); } - break; + return $this->escapeConsole($text); } + + break; } if ($this->options['type'] === 'cli') { @@ -648,7 +669,9 @@ public function toString($token) } return $this->escapeConsole($text); - } elseif ($this->options['type'] === 'html') { + } + + if ($this->options['type'] === 'html') { return htmlspecialchars($text, ENT_NOQUOTES); } @@ -658,12 +681,12 @@ public function toString($token) /** * Formats a query. * - * @param string $query The query to be formatted - * @param array $options the formatting options + * @param string $query The query to be formatted + * @param array>> $options the formatting options * * @return string the formatted string */ - public static function format($query, array $options = []) + public static function format(string $query, array $options = []): string { $lexer = new Lexer($query); $formatter = new self($options); @@ -677,31 +700,25 @@ public static function format($query, array $options = []) * A group is delimited by a pair of brackets. * * @param TokensList $list the list of tokens - * - * @return int */ - public static function getGroupLength($list) + public static function getGroupLength(TokensList $list): int { /** * The number of opening brackets found. * This counter starts at one because by the time this function called, * the list already advanced one position and the opening bracket was * already parsed. - * - * @var int */ $count = 1; /** * The length of this group. - * - * @var int */ $length = 0; for ($idx = $list->idx; $idx < $list->count; ++$idx) { // Counting the brackets. - if ($list->tokens[$idx]->type === Token::TYPE_OPERATOR) { + if ($list->tokens[$idx]->type === TokenType::Operator) { if ($list->tokens[$idx]->value === '(') { ++$count; } elseif ($list->tokens[$idx]->value === ')') { @@ -724,15 +741,21 @@ public static function getGroupLength($list) * * @param Token $token the token to be checked * - * @return int|bool + * @psalm-return 1|2|false */ - public static function isClause($token) + public static function isClause(Token $token): int|false { - if (($token->type === Token::TYPE_KEYWORD && isset(Parser::$STATEMENT_PARSERS[$token->keyword])) - || ($token->type === Token::TYPE_NONE && strtoupper($token->token) === 'DELIMITER') + if ( + ($token->type === TokenType::Keyword && isset(Parser::STATEMENT_PARSERS[$token->keyword])) + || ($token->type === TokenType::None && strtoupper($token->token) === 'DELIMITER') ) { return 2; - } elseif ($token->type === Token::TYPE_KEYWORD && isset(Parser::$KEYWORD_PARSERS[$token->keyword]) + } + + if ( + $token->type === TokenType::Keyword && ( + in_array($token->keyword, self::FORMATTERS, true) || isset(Parser::KEYWORD_PARSERS[$token->keyword]) + ) ) { return 1; } diff --git a/src/Utils/Misc.php b/src/Utils/Misc.php deleted file mode 100644 index 9e3ae0287..000000000 --- a/src/Utils/Misc.php +++ /dev/null @@ -1,108 +0,0 @@ -expr) - || empty($statement->from) - ) { - return []; - } - - $retval = []; - - $tables = []; - - /** - * Expressions that may contain aliases. - * These are extracted from `FROM` and `JOIN` keywords. - * - * @var Expression[] - */ - $expressions = $statement->from; - - // Adding expressions from JOIN. - if (! empty($statement->join)) { - foreach ($statement->join as $join) { - $expressions[] = $join->expr; - } - } - - foreach ($expressions as $expr) { - if (! isset($expr->table) || ($expr->table === '')) { - continue; - } - - $thisDb = (isset($expr->database) && ($expr->database !== '')) ? - $expr->database : $database; - - if (! isset($retval[$thisDb])) { - $retval[$thisDb] = [ - 'alias' => null, - 'tables' => [], - ]; - } - - if (! isset($retval[$thisDb]['tables'][$expr->table])) { - $retval[$thisDb]['tables'][$expr->table] = [ - 'alias' => (isset($expr->alias) && ($expr->alias !== '')) ? - $expr->alias : null, - 'columns' => [], - ]; - } - - if (! isset($tables[$thisDb])) { - $tables[$thisDb] = []; - } - $tables[$thisDb][$expr->alias] = $expr->table; - } - - foreach ($statement->expr as $expr) { - if (! isset($expr->column, $expr->alias) || ($expr->column === '') || ($expr->alias === '') - ) { - continue; - } - - $thisDb = (isset($expr->database) && ($expr->database !== '')) ? - $expr->database : $database; - - if (isset($expr->table) && ($expr->table !== '')) { - $thisTable = isset($tables[$thisDb][$expr->table]) ? - $tables[$thisDb][$expr->table] : $expr->table; - $retval[$thisDb]['tables'][$thisTable]['columns'][$expr->column] = $expr->alias; - } else { - foreach ($retval[$thisDb]['tables'] as &$table) { - $table['columns'][$expr->column] = $expr->alias; - } - } - } - - return $retval; - } -} diff --git a/src/Utils/Query.php b/src/Utils/Query.php index 7b14ded00..2df3175a0 100644 --- a/src/Utils/Query.php +++ b/src/Utils/Query.php @@ -1,12 +1,9 @@ false, - - /* - * drop ... DATABASE ... - */ - 'drop_database' => false, - - /* - * ... GROUP BY ... - */ - 'group' => false, - - /* - * ... HAVING ... - */ - 'having' => false, - - /* - * INSERT ... - * or - * REPLACE ... - * or - * DELETE ... - */ - 'is_affected' => false, - - /* - * select ... PROCEDURE ANALYSE( ... ) ... - */ - 'is_analyse' => false, - - /* - * select COUNT( ... ) ... - */ - 'is_count' => false, - - /* - * DELETE ... - */ - 'is_delete' => false, // @deprecated; use `querytype` - - /* - * EXPLAIN ... - */ - 'is_explain' => false, // @deprecated; use `querytype` - - /* - * select ... INTO OUTFILE ... - */ - 'is_export' => false, - - /* - * select FUNC( ... ) ... - */ - 'is_func' => false, - - /* - * select ... GROUP BY ... - * or - * select ... HAVING ... - */ - 'is_group' => false, - - /* - * INSERT ... - * or - * REPLACE ... - * or - * LOAD DATA ... - */ - 'is_insert' => false, - - /* - * ANALYZE ... - * or - * CHECK ... - * or - * CHECKSUM ... - * or - * OPTIMIZE ... - * or - * REPAIR ... - */ - 'is_maint' => false, - - /* - * CALL ... - */ - 'is_procedure' => false, - - /* - * REPLACE ... - */ - 'is_replace' => false, // @deprecated; use `querytype` - - /* - * SELECT ... - */ - 'is_select' => false, // @deprecated; use `querytype` - - /* - * SHOW ... - */ - 'is_show' => false, // @deprecated; use `querytype` - - /* - * Contains a subquery. - */ - 'is_subquery' => false, - - /* - * ... JOIN ... - */ - 'join' => false, - - /* - * ... LIMIT ... - */ - 'limit' => false, - - /* - * TODO - */ - 'offset' => false, - - /* - * ... ORDER ... - */ - 'order' => false, - - /* - * The type of the query (which is usually the first keyword of - * the statement). - */ - 'querytype' => false, - - /* - * Whether a page reload is required. - */ - 'reload' => false, - - /* - * SELECT ... FROM ... - */ - 'select_from' => false, - - /* - * ... UNION ... - */ - 'union' => false, - ]; - /** * Gets an array with flags select statement has. * * @param SelectStatement $statement the statement to be processed - * @param array $flags flags set so far - * - * @return array + * @param StatementFlags $flags flags set so far */ - private static function getFlagsSelect($statement, $flags) + private static function getFlagsSelect(SelectStatement $statement, StatementFlags $flags): void { - $flags['querytype'] = 'SELECT'; - $flags['is_select'] = true; + $flags->queryType = StatementType::Select; + /** @psalm-suppress DeprecatedProperty */ + $flags->isSelect = true; - if (! empty($statement->from)) { - $flags['select_from'] = true; + if ($statement->from !== []) { + $flags->selectFrom = true; } if ($statement->options->has('DISTINCT')) { - $flags['distinct'] = true; + $flags->distinct = true; } if (! empty($statement->group) || ! empty($statement->having)) { - $flags['is_group'] = true; + $flags->isGroup = true; } - if (! empty($statement->into) - && ($statement->into->type === 'OUTFILE') - ) { - $flags['is_export'] = true; + if (! empty($statement->into) && ($statement->into->type === 'OUTFILE')) { + $flags->isExport = true; } $expressions = $statement->expr; @@ -254,131 +99,133 @@ private static function getFlagsSelect($statement, $flags) foreach ($expressions as $expr) { if (! empty($expr->function)) { - if ($expr->function === 'COUNT') { - $flags['is_count'] = true; - } elseif (in_array($expr->function, static::$FUNCTIONS)) { - $flags['is_func'] = true; + $function = strtoupper($expr->function); + if ($function === 'COUNT') { + $flags->isCount = true; + } elseif (in_array($function, static::$functions, true)) { + $flags->isFunc = true; } } - if (! empty($expr->subquery)) { - $flags['is_subquery'] = true; + + if (empty($expr->subquery)) { + continue; } + + $flags->isSubQuery = true; } - if (! empty($statement->procedure) - && ($statement->procedure->name === 'ANALYSE') - ) { - $flags['is_analyse'] = true; + if (! empty($statement->procedure) && ($statement->procedure->name === 'ANALYSE')) { + $flags->isAnalyse = true; } if (! empty($statement->group)) { - $flags['group'] = true; + $flags->group = true; } if (! empty($statement->having)) { - $flags['having'] = true; + $flags->having = true; } - if (! empty($statement->union)) { - $flags['union'] = true; + if ($statement->union !== []) { + $flags->union = true; } - if (! empty($statement->join)) { - $flags['join'] = true; + if (empty($statement->join)) { + return; } - return $flags; + $flags->join = true; } /** * Gets an array with flags this statement has. * * @param Statement|null $statement the statement to be processed - * @param bool $all if `false`, false values will not be included - * - * @return array */ - public static function getFlags($statement, $all = false) + public static function getFlags(Statement|null $statement): StatementFlags { - $flags = ['querytype' => false]; - if ($all) { - $flags = self::$ALLFLAGS; - } + $flags = new StatementFlags(); if ($statement instanceof AlterStatement) { - $flags['querytype'] = 'ALTER'; - $flags['reload'] = true; + $flags->queryType = StatementType::Alter; + $flags->reload = true; } elseif ($statement instanceof CreateStatement) { - $flags['querytype'] = 'CREATE'; - $flags['reload'] = true; + $flags->queryType = StatementType::Create; + $flags->reload = true; } elseif ($statement instanceof AnalyzeStatement) { - $flags['querytype'] = 'ANALYZE'; - $flags['is_maint'] = true; + $flags->queryType = StatementType::Analyze; + $flags->isMaint = true; } elseif ($statement instanceof CheckStatement) { - $flags['querytype'] = 'CHECK'; - $flags['is_maint'] = true; + $flags->queryType = StatementType::Check; + $flags->isMaint = true; } elseif ($statement instanceof ChecksumStatement) { - $flags['querytype'] = 'CHECKSUM'; - $flags['is_maint'] = true; + $flags->queryType = StatementType::Checksum; + $flags->isMaint = true; } elseif ($statement instanceof OptimizeStatement) { - $flags['querytype'] = 'OPTIMIZE'; - $flags['is_maint'] = true; + $flags->queryType = StatementType::Optimize; + $flags->isMaint = true; } elseif ($statement instanceof RepairStatement) { - $flags['querytype'] = 'REPAIR'; - $flags['is_maint'] = true; + $flags->queryType = StatementType::Repair; + $flags->isMaint = true; } elseif ($statement instanceof CallStatement) { - $flags['querytype'] = 'CALL'; - $flags['is_procedure'] = true; + $flags->queryType = StatementType::Call; + $flags->isProcedure = true; } elseif ($statement instanceof DeleteStatement) { - $flags['querytype'] = 'DELETE'; - $flags['is_delete'] = true; - $flags['is_affected'] = true; + $flags->queryType = StatementType::Delete; + /** @psalm-suppress DeprecatedProperty */ + $flags->isDelete = true; + $flags->isAffected = true; } elseif ($statement instanceof DropStatement) { - $flags['querytype'] = 'DROP'; - $flags['reload'] = true; + $flags->queryType = StatementType::Drop; + $flags->reload = true; - if ($statement->options->has('DATABASE') - || $statement->options->has('SCHEMA') - ) { - $flags['drop_database'] = true; + if ($statement->options->has('DATABASE') || $statement->options->has('SCHEMA')) { + $flags->dropDatabase = true; } } elseif ($statement instanceof ExplainStatement) { - $flags['querytype'] = 'EXPLAIN'; - $flags['is_explain'] = true; + $flags->queryType = StatementType::Explain; + /** @psalm-suppress DeprecatedProperty */ + $flags->isExplain = true; } elseif ($statement instanceof InsertStatement) { - $flags['querytype'] = 'INSERT'; - $flags['is_affected'] = true; - $flags['is_insert'] = true; + $flags->queryType = StatementType::Insert; + $flags->isAffected = true; + $flags->isInsert = true; } elseif ($statement instanceof LoadStatement) { - $flags['querytype'] = 'LOAD'; - $flags['is_affected'] = true; - $flags['is_insert'] = true; + $flags->queryType = StatementType::Load; + $flags->isAffected = true; + $flags->isInsert = true; } elseif ($statement instanceof ReplaceStatement) { - $flags['querytype'] = 'REPLACE'; - $flags['is_affected'] = true; - $flags['is_replace'] = true; - $flags['is_insert'] = true; + $flags->queryType = StatementType::Replace; + $flags->isAffected = true; + /** @psalm-suppress DeprecatedProperty */ + $flags->isReplace = true; + $flags->isInsert = true; } elseif ($statement instanceof SelectStatement) { - $flags = self::getFlagsSelect($statement, $flags); + self::getFlagsSelect($statement, $flags); } elseif ($statement instanceof ShowStatement) { - $flags['querytype'] = 'SHOW'; - $flags['is_show'] = true; + $flags->queryType = StatementType::Show; + /** @psalm-suppress DeprecatedProperty */ + $flags->isShow = true; } elseif ($statement instanceof UpdateStatement) { - $flags['querytype'] = 'UPDATE'; - $flags['is_affected'] = true; + $flags->queryType = StatementType::Update; + $flags->isAffected = true; } elseif ($statement instanceof SetStatement) { - $flags['querytype'] = 'SET'; + $flags->queryType = StatementType::Set; + } elseif ($statement instanceof KillStatement) { + $flags->queryType = StatementType::Kill; } - if (($statement instanceof SelectStatement) + if ( + ($statement instanceof SelectStatement) || ($statement instanceof UpdateStatement) || ($statement instanceof DeleteStatement) ) { if (! empty($statement->limit)) { - $flags['limit'] = true; + $flags->limit = true; } + if (! empty($statement->order)) { - $flags['order'] = true; + $flags->order = true; } } @@ -389,46 +236,32 @@ public static function getFlags($statement, $all = false) * Parses a query and gets all information about it. * * @param string $query the query to be parsed - * - * @return array The array returned is the one returned by - * `static::getFlags()`, with the following keys added: - * - parser - the parser used to analyze the query; - * - statement - the first statement resulted from parsing; - * - select_tables - the real name of the tables selected; - * if there are no table names in the `SELECT` - * expressions, the table names are fetched from the - * `FROM` expressions - * - select_expr - selected expressions */ - public static function getAll($query) + public static function getAll(string $query): StatementInfo { $parser = new Parser($query); - if (empty($parser->statements[0])) { - return static::getFlags(null, true); + if ($parser->statements === []) { + return new StatementInfo($parser, null, static::getFlags(null), [], []); } $statement = $parser->statements[0]; - - $ret = static::getFlags($statement, true); - - $ret['parser'] = $parser; - $ret['statement'] = $statement; + $flags = static::getFlags($statement); + $selectTables = []; + $selectExpressions = []; if ($statement instanceof SelectStatement) { - $ret['select_tables'] = []; - $ret['select_expr'] = []; - // Finding tables' aliases and their associated real names. $tableAliases = []; foreach ($statement->from as $expr) { - if (isset($expr->table, $expr->alias) && ($expr->table !== '') && ($expr->alias !== '') - ) { - $tableAliases[$expr->alias] = [ - $expr->table, - isset($expr->database) ? $expr->database : null, - ]; + if (! isset($expr->table, $expr->alias) || ($expr->table === '') || ($expr->alias === '')) { + continue; } + + $tableAliases[$expr->alias] = [ + $expr->table, + $expr->database ?? null, + ]; } // Trying to find selected tables only from the select expression. @@ -441,38 +274,43 @@ public static function getAll($query) } else { $arr = [ $expr->table, - (isset($expr->database) && ($expr->database !== '')) ? + isset($expr->database) && ($expr->database !== '') ? $expr->database : null, ]; } - if (! in_array($arr, $ret['select_tables'])) { - $ret['select_tables'][] = $arr; + + if (! in_array($arr, $selectTables)) { + $selectTables[] = $arr; } } else { - $ret['select_expr'][] = $expr->expr; + $selectExpressions[] = $expr->expr; } } // If no tables names were found in the SELECT clause or if there // are expressions like * or COUNT(*), etc. tables names should be // extracted from the FROM clause. - if (empty($ret['select_tables'])) { + if ($selectTables === []) { foreach ($statement->from as $expr) { - if (isset($expr->table) && ($expr->table !== '')) { - $arr = [ - $expr->table, - (isset($expr->database) && ($expr->database !== '')) ? - $expr->database : null, - ]; - if (! in_array($arr, $ret['select_tables'])) { - $ret['select_tables'][] = $arr; - } + if (! isset($expr->table) || ($expr->table === '')) { + continue; } + + $arr = [ + $expr->table, + isset($expr->database) && ($expr->database !== '') ? + $expr->database : null, + ]; + if (in_array($arr, $selectTables)) { + continue; + } + + $selectTables[] = $arr; } } } - return $ret; + return new StatementInfo($parser, $statement, $flags, $selectTables, $selectExpressions); } /** @@ -480,31 +318,26 @@ public static function getAll($query) * * @param Statement $statement statement to be scanned * - * @return array + * @return array */ - public static function getTables($statement) + public static function getTables(Statement $statement): array { $expressions = []; - if (($statement instanceof InsertStatement) - || ($statement instanceof ReplaceStatement) - ) { + if (($statement instanceof InsertStatement) || ($statement instanceof ReplaceStatement)) { $expressions = [$statement->into->dest]; } elseif ($statement instanceof UpdateStatement) { $expressions = $statement->tables; - } elseif (($statement instanceof SelectStatement) - || ($statement instanceof DeleteStatement) - ) { + } elseif (($statement instanceof SelectStatement) || ($statement instanceof DeleteStatement)) { $expressions = $statement->from; - } elseif (($statement instanceof AlterStatement) - || ($statement instanceof TruncateStatement) - ) { + } elseif (($statement instanceof AlterStatement) || ($statement instanceof TruncateStatement)) { $expressions = [$statement->table]; } elseif ($statement instanceof DropStatement) { if (! $statement->options->has('TABLE')) { // No tables are dropped. return []; } + $expressions = $statement->fields; } elseif ($statement instanceof RenameStatement) { foreach ($statement->renames as $rename) { @@ -514,11 +347,13 @@ public static function getTables($statement) $ret = []; foreach ($expressions as $expr) { - if (! empty($expr->table)) { - $expr->expr = null; // Force rebuild. - $expr->alias = null; // Aliases are not required. - $ret[] = Expression::build($expr); + if (empty($expr->table)) { + continue; } + + $expr->expr = null; // Force rebuild. + $expr->alias = null; // Aliases are not required. + $ret[] = $expr->build(); } return $ret; @@ -538,60 +373,49 @@ public static function getTables($statement) * If string, the name of the first clause that * should not be included. * @param bool $skipFirst whether to skip the first keyword in clause - * - * @return string */ - public static function getClause($statement, $list, $clause, $type = 0, $skipFirst = true) - { + public static function getClause( + Statement $statement, + TokensList $list, + string $clause, + int|string $type = 0, + bool $skipFirst = true, + ): string { /** * The index of the current clause. - * - * @var int */ $currIdx = 0; /** * The count of brackets. * We keep track of them so we won't insert the clause in a subquery. - * - * @var int */ $brackets = 0; /** * The string to be returned. - * - * @var string */ $ret = ''; /** * The clauses of this type of statement and their index. - * - * @var array */ - $clauses = array_flip(array_keys($statement->getClauses())); + $clauses = $statement->getClauseOrder(); /** * Lexer used for lexing the clause. - * - * @var Lexer */ $lexer = new Lexer($clause); /** * The type of this clause. - * - * @var string */ - $clauseType = $lexer->list->getNextOfType(Token::TYPE_KEYWORD)->keyword; + $clauseType = $lexer->list->getNextOfType(TokenType::Keyword)->keyword; /** * The index of this clause. - * - * @var int */ - $clauseIdx = $clauses[$clauseType]; + $clauseIdx = $clauses[$clauseType] ?? -1; $firstClauseIdx = $clauseIdx; $lastClauseIdx = $clauseIdx; @@ -621,11 +445,11 @@ public static function getClause($statement, $list, $clause, $type = 0, $skipFir for ($i = $statement->first; $i <= $statement->last; ++$i) { $token = $list->tokens[$i]; - if ($token->type === Token::TYPE_COMMENT) { + if ($token->type === TokenType::Comment) { continue; } - if ($token->type === Token::TYPE_OPERATOR) { + if ($token->type === TokenType::Operator) { if ($token->value === '(') { ++$brackets; } elseif ($token->value === ')') { @@ -635,7 +459,8 @@ public static function getClause($statement, $list, $clause, $type = 0, $skipFir if ($brackets === 0) { // Checking if the section was changed. - if (($token->type === Token::TYPE_KEYWORD) + if ( + ($token->type === TokenType::Keyword) && isset($clauses[$token->keyword]) && ($clauses[$token->keyword] >= $currIdx) ) { @@ -648,14 +473,39 @@ public static function getClause($statement, $list, $clause, $type = 0, $skipFir } } - if (($firstClauseIdx <= $currIdx) && ($currIdx <= $lastClauseIdx)) { - $ret .= $token->token; + if (($firstClauseIdx > $currIdx) || ($currIdx > $lastClauseIdx)) { + continue; } + + $ret .= $token->token; } return trim($ret); } + /** @param list $parts */ + private static function glueQueryPartsWithSpaces(array $parts): string + { + $statement = ''; + foreach ($parts as $part) { + if ($part === '') { + continue; + } + + if ( + $statement !== '' && + ! ctype_space(mb_substr($statement, -1)) && + ! ctype_space(mb_substr($part, 0, 1)) + ) { + $statement .= ' '; + } + + $statement .= $part; + } + + return $statement; + } + /** * Builds a query by rebuilding the statement from the tokens list supplied * and replaces a clause. @@ -670,40 +520,40 @@ public static function getClause($statement, $list, $clause, $type = 0, $skipFir * it is considered to be equal with `$old`. * @param bool $onlyType whether only the type of the clause should * be replaced or the entire clause - * - * @return string */ - public static function replaceClause($statement, $list, $old, $new = null, $onlyType = false) - { + public static function replaceClause( + Statement $statement, + TokensList $list, + string $old, + string|null $new = null, + bool $onlyType = false, + ): string { // TODO: Update the tokens list and the statement. - if ($new === null) { - $new = $old; - } - + $parts = [ + static::getClause($statement, $list, $old, -1, false), + $new ?? $old, + ]; if ($onlyType) { - return static::getClause($statement, $list, $old, -1, false) . ' ' . - $new . ' ' . static::getClause($statement, $list, $old, 0) . ' ' . - static::getClause($statement, $list, $old, 1, false); + $parts[] = static::getClause($statement, $list, $old, 0); } - return static::getClause($statement, $list, $old, -1, false) . ' ' . - $new . ' ' . static::getClause($statement, $list, $old, 1, false); + $parts[] = static::getClause($statement, $list, $old, 1, false); + + return self::glueQueryPartsWithSpaces($parts); } /** * Builds a query by rebuilding the statement from the tokens list supplied * and replaces multiple clauses. * - * @param Statement $statement the parsed query that has to be modified - * @param TokensList $list the list of tokens - * @param array $ops Clauses to be replaced. Contains multiple - * arrays having two values: array($old, $new). + * @param Statement $statement the parsed query that has to be modified + * @param TokensList $list the list of tokens + * @param array> $ops Clauses to be replaced. Contains multiple + * arrays having two values: [$old, $new]. * Clauses must be sorted. - * - * @return string */ - public static function replaceClauses($statement, $list, array $ops) + public static function replaceClauses(Statement $statement, TokensList $list, array $ops): string { $count = count($ops); @@ -712,40 +562,30 @@ public static function replaceClauses($statement, $list, array $ops) return ''; } - /** - * Value to be returned. - * - * @var string - */ - $ret = ''; - // If there is only one clause, `replaceClause()` should be used. if ($count === 1) { - return static::replaceClause( - $statement, - $list, - $ops[0][0], - $ops[0][1] - ); + return static::replaceClause($statement, $list, $ops[0][0], $ops[0][1]); } // Adding everything before first replacement. - $ret .= static::getClause($statement, $list, $ops[0][0], -1) . ' '; + $parts = [static::getClause($statement, $list, $ops[0][0], -1)]; // Doing replacements. foreach ($ops as $i => $clause) { - $ret .= $clause[1] . ' '; + $parts[] = $clause[1]; // Adding everything between this and next replacement. - if ($i + 1 !== $count) { - $ret .= static::getClause($statement, $list, $clause[0], $ops[$i + 1][0]) . ' '; + if ($i + 1 === $count) { + continue; } + + $parts[] = static::getClause($statement, $list, $clause[0], $ops[$i + 1][0]); } // Adding everything after the last replacement. - $ret .= static::getClause($statement, $list, $ops[$count - 1][0], 1); + $parts[] = static::getClause($statement, $list, $ops[$count - 1][0], 1); - return $ret; + return self::glueQueryPartsWithSpaces($parts); } /** @@ -754,39 +594,35 @@ public static function replaceClauses($statement, $list, array $ops) * @param string $query the query to be analyzed * @param string $delimiter the delimiter to be used * - * @return array array containing the first full query, the - * remaining part of the query and the last - * delimiter + * @return array array containing the first full query, + * the remaining part of the query and the last delimiter + * @psalm-return array{string|null, string, string|null} */ - public static function getFirstStatement($query, $delimiter = null) + public static function getFirstStatement(string $query, string|null $delimiter = null): array { $lexer = new Lexer($query, false, $delimiter); $list = $lexer->list; /** * Whether a full statement was found. - * - * @var bool */ $fullStatement = false; /** * The first full statement. - * - * @var string */ $statement = ''; for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { $token = $list->tokens[$list->idx]; - if ($token->type === Token::TYPE_COMMENT) { + if ($token->type === TokenType::Comment) { continue; } $statement .= $token->token; - if (($token->type === Token::TYPE_DELIMITER) && ! empty($token->token)) { + if (($token->type === TokenType::Delimiter) && ! empty($token->token)) { $delimiter = $token->token; $fullStatement = true; break; @@ -823,34 +659,28 @@ public static function getFirstStatement($query, $delimiter = null) * @param Statement $statement the parsed query that has to be modified * @param TokensList $list the list of tokens * @param string $clause the clause to be returned - * - * @return int */ - public static function getClauseStartOffset($statement, $list, $clause) + public static function getClauseStartOffset(Statement $statement, TokensList $list, string $clause): int { /** * The count of brackets. * We keep track of them so we won't insert the clause in a subquery. - * - * @var int */ $brackets = 0; /** * The clauses of this type of statement and their index. - * - * @var array */ $clauses = array_flip(array_keys($statement->getClauses())); for ($i = $statement->first; $i <= $statement->last; ++$i) { $token = $list->tokens[$i]; - if ($token->type === Token::TYPE_COMMENT) { + if ($token->type === TokenType::Comment) { continue; } - if ($token->type === Token::TYPE_OPERATOR) { + if ($token->type === TokenType::Operator) { if ($token->value === '(') { ++$brackets; } elseif ($token->value === ')') { @@ -858,15 +688,20 @@ public static function getClauseStartOffset($statement, $list, $clause) } } - if ($brackets === 0) { - if (($token->type === Token::TYPE_KEYWORD) - && isset($clauses[$token->keyword]) - && ($clause === $token->keyword) - ) { - return $i; - } elseif ($token->keyword === 'UNION') { - return -1; - } + if ($brackets !== 0) { + continue; + } + + if ( + ($token->type === TokenType::Keyword) + && isset($clauses[$token->keyword]) + && ($clause === $token->keyword) + ) { + return $i; + } + + if ($token->keyword === 'UNION') { + return -1; } } diff --git a/src/Utils/Routine.php b/src/Utils/Routine.php deleted file mode 100644 index 9842ff192..000000000 --- a/src/Utils/Routine.php +++ /dev/null @@ -1,143 +0,0 @@ -list); - - if ($type === null) { - return [ - '', - '', - '', - '', - '', - ]; - } - - $options = []; - foreach ($type->options->options as $opt) { - $options[] = is_string($opt) ? $opt : $opt['value']; - } - - return [ - '', - '', - $type->name, - implode(',', $type->parameters), - implode(' ', $options), - ]; - } - - /** - * Parses a parameter of a routine. - * - * @param string $param parameter's definition - * - * @return array - */ - public static function getParameter($param) - { - $lexer = new Lexer('(' . $param . ')'); - - // A dummy parser is used for error reporting. - $param = ParameterDefinition::parse(new Parser(), $lexer->list); - - if (empty($param[0])) { - return [ - '', - '', - '', - '', - '', - ]; - } - - $param = $param[0]; - - $options = []; - foreach ($param->type->options->options as $opt) { - $options[] = is_string($opt) ? $opt : $opt['value']; - } - - return [ - empty($param->inOut) ? '' : $param->inOut, - $param->name, - $param->type->name, - implode(',', $param->type->parameters), - implode(' ', $options), - ]; - } - - /** - * Gets the parameters of a routine from the parse tree. - * - * @param CreateStatement $statement the statement to be processed - * - * @return array - */ - public static function getParameters($statement) - { - $retval = [ - 'num' => 0, - 'dir' => [], - 'name' => [], - 'type' => [], - 'length' => [], - 'length_arr' => [], - 'opts' => [], - ]; - - if (! empty($statement->parameters)) { - $idx = 0; - foreach ($statement->parameters as $param) { - $retval['dir'][$idx] = $param->inOut; - $retval['name'][$idx] = $param->name; - $retval['type'][$idx] = $param->type->name; - $retval['length'][$idx] = implode(',', $param->type->parameters); - $retval['length_arr'][$idx] = $param->type->parameters; - $retval['opts'][$idx] = []; - foreach ($param->type->options->options as $opt) { - $retval['opts'][$idx][] = is_string($opt) ? - $opt : $opt['value']; - } - $retval['opts'][$idx] = implode(' ', $retval['opts'][$idx]); - ++$idx; - } - - $retval['num'] = $idx; - } - - return $retval; - } -} diff --git a/src/Utils/StatementFlags.php b/src/Utils/StatementFlags.php new file mode 100644 index 000000000..f135adad9 --- /dev/null +++ b/src/Utils/StatementFlags.php @@ -0,0 +1,153 @@ + $selectTables + * @psalm-param list $selectExpressions + */ + public function __construct( + public readonly Parser $parser, + public readonly Statement|null $statement, + public readonly StatementFlags $flags, + public readonly array $selectTables, + public readonly array $selectExpressions, + ) { + } +} diff --git a/src/Utils/StatementType.php b/src/Utils/StatementType.php new file mode 100644 index 000000000..7d3216a38 --- /dev/null +++ b/src/Utils/StatementType.php @@ -0,0 +1,28 @@ +fields) - || (! is_array($statement->fields)) - || (! $statement->options->has('TABLE')) - ) { - return []; - } - - $ret = []; - - foreach ($statement->fields as $field) { - if (empty($field->key) || ($field->key->type !== 'FOREIGN KEY')) { - continue; - } - - $columns = []; - foreach ($field->key->columns as $column) { - $columns[] = $column['name']; - } - - $tmp = [ - 'constraint' => $field->name, - 'index_list' => $columns, - ]; - - if (! empty($field->references)) { - $tmp['ref_db_name'] = $field->references->table->database; - $tmp['ref_table_name'] = $field->references->table->table; - $tmp['ref_index_list'] = $field->references->columns; - - if ($opt = $field->references->options->has('ON UPDATE')) { - $tmp['on_update'] = str_replace(' ', '_', $opt); - } - - if ($opt = $field->references->options->has('ON DELETE')) { - $tmp['on_delete'] = str_replace(' ', '_', $opt); - } - - // if (($opt = $field->references->options->has('MATCH'))) { - // $tmp['match'] = str_replace(' ', '_', $opt); - // } - } - - $ret[] = $tmp; - } - - return $ret; - } - /** * Gets fields of the table. * * @param CreateStatement $statement the statement to be processed * - * @return array + * @return array> + * @psalm-return array */ - public static function getFields($statement) + public static function getFields(CreateStatement $statement): array { - if (empty($statement->fields) - || (! is_array($statement->fields)) - || (! $statement->options->has('TABLE')) - ) { + if (empty($statement->fields) || ! is_array($statement->fields) || ! $statement->options->has('TABLE')) { return []; } @@ -103,31 +47,36 @@ public static function getFields($statement) 'timestamp_not_null' => false, ]; - if ($field->options) { - if ($field->type->name === 'TIMESTAMP') { - if ($field->options->has('NOT NULL')) { - $ret[$field->name]['timestamp_not_null'] = true; - } - } + if (! $field->options) { + continue; + } - if ($option = $field->options->has('DEFAULT')) { - $ret[$field->name]['default_value'] = $option; - if ($option === 'CURRENT_TIMESTAMP') { - $ret[$field->name]['default_current_timestamp'] = true; - } + if ($field->type->name === 'TIMESTAMP') { + if ($field->options->has('NOT NULL')) { + $ret[$field->name]['timestamp_not_null'] = true; } + } - if ($option = $field->options->has('ON UPDATE')) { - if ($option === 'CURRENT_TIMESTAMP') { - $ret[$field->name]['on_update_current_timestamp'] = true; - } - } + $option = $field->options->get('DEFAULT'); - if ($option = $field->options->has('AS')) { - $ret[$field->name]['generated'] = true; - $ret[$field->name]['expr'] = $option; + if ($option !== '') { + $ret[$field->name]['default_value'] = $option; + if ($option === 'CURRENT_TIMESTAMP') { + $ret[$field->name]['default_current_timestamp'] = true; } } + + if ($field->options->get('ON UPDATE') === 'CURRENT_TIMESTAMP') { + $ret[$field->name]['on_update_current_timestamp'] = true; + } + + $option = $field->options->get('AS'); + + if ($option === '') { + continue; + } + + $ret[$field->name]['expr'] = $option; } return $ret; diff --git a/src/Utils/Tokens.php b/src/Utils/Tokens.php deleted file mode 100644 index b7f5935bc..000000000 --- a/src/Utils/Tokens.php +++ /dev/null @@ -1,168 +0,0 @@ -token) - ) { - return false; - } - - // Value. - if (isset($pattern['value']) - && ($pattern['value'] !== $token->value) - ) { - return false; - } - - if (isset($pattern['value_str']) - && strcasecmp($pattern['value_str'], (string) $token->value) - ) { - return false; - } - - // Type. - if (isset($pattern['type']) - && ($pattern['type'] !== $token->type) - ) { - return false; - } - - // Flags. - if (isset($pattern['flags']) - && (($pattern['flags'] & $token->flags) === 0) - ) { - return false; - } - - return true; - } - - public static function replaceTokens($list, array $find, array $replace) - { - /** - * Whether the first parameter is a list. - * - * @var bool - */ - $isList = $list instanceof TokensList; - - // Parsing the tokens. - if (! $isList) { - $list = Lexer::getTokens($list); - } - - /** - * The list to be returned. - * - * @var array - */ - $newList = []; - - /** - * The length of the find pattern is calculated only once. - * - * @var int - */ - $findCount = count($find); - - /** - * The starting index of the pattern. - * - * @var int - */ - $i = 0; - - while ($i < $list->count) { - // A sequence may not start with a comment. - if ($list->tokens[$i]->type === Token::TYPE_COMMENT) { - $newList[] = $list->tokens[$i]; - ++$i; - continue; - } - - /** - * The index used to parse `$list->tokens`. - * - * This index might be running faster than `$k` because some tokens - * are skipped. - * - * @var int - */ - $j = $i; - - /** - * The index used to parse `$find`. - * - * This index might be running slower than `$j` because some tokens - * are skipped. - * - * @var int - */ - $k = 0; - - // Checking if the next tokens match the pattern described. - while (($j < $list->count) && ($k < $findCount)) { - // Comments are being skipped. - if ($list->tokens[$j]->type === Token::TYPE_COMMENT) { - ++$j; - } - - if (! static::match($list->tokens[$j], $find[$k])) { - // This token does not match the pattern. - break; - } - - // Going to next token and segment of find pattern. - ++$j; - ++$k; - } - - // Checking if the sequence was found. - if ($k === $findCount) { - // Inserting new tokens. - foreach ($replace as $token) { - $newList[] = $token; - } - - // Skipping next `$findCount` tokens. - $i = $j; - } else { - // Adding the same token. - $newList[] = $list->tokens[$i]; - ++$i; - } - } - - return $isList ? - new TokensList($newList) : TokensList::build($newList); - } -} diff --git a/tests/Builder/AlterStatementTest.php b/tests/Builder/AlterStatementTest.php index 70236e417..2ef398ea1 100644 --- a/tests/Builder/AlterStatementTest.php +++ b/tests/Builder/AlterStatementTest.php @@ -1,14 +1,17 @@ assertEquals($query, $stmt->build()); } + + public function testBuilderWithExpression(): void + { + $query = 'ALTER TABLE `table` ' + . 'ADD UNIQUE KEY `functional_index`' + . ' (`field1`,`field2`, (IFNULL(`field3`,0)))'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderWithComments(): void + { + $query = 'ALTER /* comment */ TABLE `actor` ' . + 'ADD PRIMARY KEY (`actor_id`), -- comment at the end of the line' . "\n" . + 'ADD KEY `idx_actor_last_name` (`last_name`) -- and that is the last comment.'; + + $expectedQuery = 'ALTER TABLE `actor` ' . + 'ADD PRIMARY KEY (`actor_id`), ' . + 'ADD KEY `idx_actor_last_name` (`last_name`)'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($expectedQuery, $stmt->build()); + } + + public function testBuilderWithCommentsOnOptions(): void + { + $query = 'ALTER EVENT `myEvent` /* comment */ ' . + 'ON SCHEDULE -- Comment at the end of the line' . "\n" . + 'AT "2023-01-01 01:23:45"'; + + $expectedQuery = 'ALTER EVENT `myEvent` ' . + 'ON SCHEDULE AT "2023-01-01 01:23:45"'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($expectedQuery, $stmt->build()); + } + + public function testBuilderCompressed(): void + { + $query = 'ALTER TABLE `user` CHANGE `message` `message` TEXT COMPRESSED'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderPartitions(): void + { + $parser = new Parser('ALTER TABLE t1 PARTITION BY HASH(id) PARTITIONS 8'); + $stmt = $parser->statements[0]; + + $this->assertEquals('ALTER TABLE t1 PARTITION BY HASH(id) PARTITIONS 8', $stmt->build()); + + $parser = new Parser('ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN (2002))'); + $stmt = $parser->statements[0]; + + $this->assertEquals( + "ALTER TABLE t1 ADD PARTITION (\n" . + "PARTITION p3 VALUES LESS THAN (2002)\n" . + ')', + $stmt->build(), + ); + + $parser = new Parser('ALTER TABLE p PARTITION BY LINEAR KEY ALGORITHM=2 (id) PARTITIONS 32;'); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'ALTER TABLE p PARTITION BY LINEAR KEY ALGORITHM=2 (id) PARTITIONS 32', + $stmt->build(), + ); + + $parser = new Parser('ALTER TABLE t1 DROP PARTITION p0, p1;'); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'ALTER TABLE t1 DROP PARTITION p0, p1', + $stmt->build(), + ); + + $parser = new Parser( + 'ALTER TABLE trips PARTITION BY RANGE (MONTH(trip_date))' + . ' (' . "\n" + . ' PARTITION p01 VALUES LESS THAN (02),' . "\n" + . ' PARTITION p02 VALUES LESS THAN (03),' . "\n" + . ' PARTITION p03 VALUES LESS THAN (04),' . "\n" + . ' PARTITION p04 VALUES LESS THAN (05),' . "\n" + . ' PARTITION p05 VALUES LESS THAN (06),' . "\n" + . ' PARTITION p06 VALUES LESS THAN (07),' . "\n" + . ' PARTITION p07 VALUES LESS THAN (08),' . "\n" + . ' PARTITION p08 VALUES LESS THAN (09),' . "\n" + . ' PARTITION p09 VALUES LESS THAN (10),' . "\n" + . ' PARTITION p10 VALUES LESS THAN (11),' . "\n" + . ' PARTITION p11 VALUES LESS THAN (12),' . "\n" + . ' PARTITION p12 VALUES LESS THAN (13),' . "\n" + . ' PARTITION pmaxval VALUES LESS THAN MAXVALUE' . "\n" + . ');', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'ALTER TABLE trips PARTITION BY RANGE (MONTH(trip_date)) (' . "\n" + . 'PARTITION p01 VALUES LESS THAN (02),' . "\n" + . 'PARTITION p02 VALUES LESS THAN (03),' . "\n" + . 'PARTITION p03 VALUES LESS THAN (04),' . "\n" + . 'PARTITION p04 VALUES LESS THAN (05),' . "\n" + . 'PARTITION p05 VALUES LESS THAN (06),' . "\n" + . 'PARTITION p06 VALUES LESS THAN (07),' . "\n" + . 'PARTITION p07 VALUES LESS THAN (08),' . "\n" + . 'PARTITION p08 VALUES LESS THAN (09),' . "\n" + . 'PARTITION p09 VALUES LESS THAN (10),' . "\n" + . 'PARTITION p10 VALUES LESS THAN (11),' . "\n" + . 'PARTITION p11 VALUES LESS THAN (12),' . "\n" + . 'PARTITION p12 VALUES LESS THAN (13),' . "\n" + . 'PARTITION pmaxval VALUES LESS THAN MAXVALUE' . "\n" + . ')', + $stmt->build(), + ); + } + + public function testBuilderEventWithDefiner(): void + { + $query = 'ALTER DEFINER=user EVENT myEvent ENABLE'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals($query, $stmt->build()); + } + + /** @return Generator */ + public static function provideBuilderForRenameColumn(): Generator + { + $query = 'ALTER TABLE myTable RENAME COLUMN a TO b'; + + yield 'Single RENAME COLUMN' => [$query]; + + $query = 'ALTER TABLE myTable RENAME COLUMN a TO b, RENAME COLUMN b TO a'; + + yield 'Multiple RENAME COLUMN' => [$query]; + + $query = 'ALTER TABLE myTable ' . + 'RENAME COLUMN a TO b, ' . + 'RENAME COLUMN b TO a, ' . + 'RENAME INDEX oldIndex TO newIndex, ' . + 'RENAME TO newTable'; + + yield 'Mixed RENAME COLUMN + RENAME INDEX + RENAME table' => [$query]; + + $query = 'ALTER TABLE myTable ' . + 'RENAME TO newTable, ' . + 'RENAME INDEX oldIndex TO newIndex, ' . + 'RENAME COLUMN b TO a, ' . + 'RENAME COLUMN a TO b'; + + yield 'Mixed RENAME table + RENAME INDEX + RENAME COLUMNS' => [$query]; + } + + #[DataProvider('provideBuilderForRenameColumn')] + public function testBuilderRenameColumn(string $query): void + { + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals($query, $stmt->build()); + } + + /** @return Generator */ + public static function provideBuilderForAlterRoutine(): Generator + { + $query = 'ALTER FUNCTION func_name COMMENT "test"'; + + yield 'Function with only comment' => [$query]; + + $query = 'ALTER FUNCTION func_name LANGUAGE SQL'; + + yield 'Function with only language' => [$query]; + + $query = 'ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER'; + + yield 'Function with all options combinations #1' => [$query]; + + $query = 'ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL NO SQL SQL SECURITY INVOKER'; + + yield 'Function with all options combinations #2' => [$query]; + + $query = 'ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL READS SQL DATA'; + + yield 'Function with all remaining options #1' => [$query]; + + $query = 'ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL MODIFIES SQL DATA'; + + yield 'Function with all remaining options #2' => [$query]; + + $query = 'ALTER PROCEDURE func_name COMMENT "test"'; + + yield 'Procedure with only comment' => [$query]; + + $query = 'ALTER PROCEDURE proc_name LANGUAGE SQL'; + + yield 'Procedure with only language' => [$query]; + + $query = 'ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER'; + + yield 'Procedure with all options combinations #1' => [$query]; + + $query = 'ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL NO SQL SQL SECURITY INVOKER'; + + yield 'Procedure with all options combinations #2' => [$query]; + + $query = 'ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL READS SQL DATA'; + + yield 'Procedure with all remaining options #1' => [$query]; + + $query = 'ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL MODIFIES SQL DATA'; + + yield 'Procedure with all remaining options #2' => [$query]; + } + + #[DataProvider('provideBuilderForAlterRoutine')] + public function testBuilderForAlterRoutine(string $query): void + { + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals($query, $stmt->build()); + } } diff --git a/tests/Builder/CallStatementTest.php b/tests/Builder/CallStatementTest.php new file mode 100644 index 000000000..d5a7bceea --- /dev/null +++ b/tests/Builder/CallStatementTest.php @@ -0,0 +1,100 @@ +statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderShort(): void + { + $query = 'CALL foo'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query . '()', $stmt->build()); + } + + public function testBuilderWithDbName(): void + { + $query = 'CALL mydb.foo()'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderWithDbNameShort(): void + { + $query = 'CALL mydb.foo'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query . '()', $stmt->build()); + } + + public function testBuilderWithDbNameAndParams(): void + { + $query = 'CALL mydb.foo(@bar, @baz);'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals('CALL mydb.foo(@bar,@baz)', $stmt->build()); + } + + public function testBuilderMultiCallsShort(): void + { + $query = 'call e;call f'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals('CALL e()', $stmt->build()); + $stmt = $parser->statements[1]; + + $this->assertEquals('CALL f()', $stmt->build()); + } + + public function testBuilderMultiCalls(): void + { + $query = 'call e();call f'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals('CALL e()', $stmt->build()); + $stmt = $parser->statements[1]; + + $this->assertEquals('CALL f()', $stmt->build()); + } + + public function testBuilderMultiCallsArgs(): void + { + $query = 'call e("foo");call f'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals('CALL e("foo")', $stmt->build()); + $stmt = $parser->statements[1]; + + $this->assertEquals('CALL f()', $stmt->build()); + } +} diff --git a/tests/Builder/CreateStatementTest.php b/tests/Builder/CreateStatementTest.php index b2fefb275..3ba1c1c53 100644 --- a/tests/Builder/CreateStatementTest.php +++ b/tests/Builder/CreateStatementTest.php @@ -1,4 +1,5 @@ statements[0]; $this->assertEquals( 'CREATE USER "jeffrey"@"localhost" IDENTIFIED BY "mypass"', - $stmt->build() + $stmt->build(), ); } - public function testBuilderDatabase() + public function testBuilderDatabase(): void { + // CREATE DATABASE ... $parser = new Parser( 'CREATE DATABASE `mydb` ' . - 'DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci' + 'DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci', ); $stmt = $parser->statements[0]; $this->assertEquals( 'CREATE DATABASE `mydb` ' . 'DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_general_ci', - $stmt->build() + $stmt->build(), + ); + + // CREATE SCHEMA ... + $parser = new Parser('CREATE SCHEMA `mydb` DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci'); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE SCHEMA `mydb` ' . + 'DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_general_ci', + $stmt->build(), ); } - public function testBuilderDefaultInt() + public function testBuilderDefaultInt(): void { $parser = new Parser( 'CREATE TABLE IF NOT EXISTS t1 (' . " c1 int(11) NOT NULL DEFAULT '0' COMMENT 'xxx'" . - ') ENGINE=MyISAM' + ') ENGINE=MyISAM', ); $stmt = $parser->statements[0]; @@ -54,16 +72,37 @@ public function testBuilderDefaultInt() "CREATE TABLE IF NOT EXISTS t1 (\n" . " `c1` int(11) NOT NULL DEFAULT '0' COMMENT 'xxx'\n" . ') ENGINE=MyISAM', - $stmt->build() + $stmt->build(), + ); + } + + public function testBuilderWithComments(): void + { + $parser = new Parser('CREATE TABLE tab1 (`col1` TIMESTAMP /*!40100 DEFAULT NULL */)'); + $stmt = $parser->statements[0]; + $this->assertEquals( + // TODO: fix with https://github.com/phpmyadmin/sql-parser/issues/256 + "CREATE TABLE tab1 (\n `col1` timestamp DEFAULT NULL\n) ", + $stmt->build(), + ); + } + + public function testBuilderCompressed(): void + { + $parser = new Parser('CREATE TABLE users ( user_id int ) PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;'); + $stmt = $parser->statements[0]; + $this->assertEquals( + "CREATE TABLE users (\n `user_id` int\n) PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9", + $stmt->build(), ); } - public function testBuilderCollate() + public function testBuilderCollate(): void { $parser = new Parser( 'CREATE TABLE IF NOT EXISTS t1 (' . " c1 varchar(11) NOT NULL DEFAULT '0' COLLATE 'utf8_czech_ci' COMMENT 'xxx'" . - ') ENGINE=MyISAM' + ') ENGINE=MyISAM', ); $stmt = $parser->statements[0]; @@ -71,17 +110,17 @@ public function testBuilderCollate() "CREATE TABLE IF NOT EXISTS t1 (\n" . " `c1` varchar(11) NOT NULL DEFAULT '0' COLLATE 'utf8_czech_ci' COMMENT 'xxx'\n" . ') ENGINE=MyISAM', - $stmt->build() + $stmt->build(), ); } - public function testBuilderDefaultComment() + public function testBuilderDefaultComment(): void { $parser = new Parser( 'CREATE TABLE `wp_audio` (' . " `somedata` int(11) DEFAULT NULL COMMENT 'ma data', " . " `someinfo` int(11) DEFAULT NULL COMMENT 'ma info' " . - ' )' + ' )', ); $stmt = $parser->statements[0]; @@ -90,11 +129,11 @@ public function testBuilderDefaultComment() " `somedata` int(11) DEFAULT NULL COMMENT 'ma data',\n" . " `someinfo` int(11) DEFAULT NULL COMMENT 'ma info'\n" . ') ', - $stmt->build() + $stmt->build(), ); } - public function testBuilderTable() + public function testBuilderTable(): void { /* Assertion 1 */ $stmt = new CreateStatement(); @@ -105,12 +144,12 @@ public function testBuilderTable() new CreateDefinition( 'id', new OptionsArray(['NOT NULL', 'AUTO_INCREMENT']), - new DataType('INT', [11], new OptionsArray(['UNSIGNED'])) + new DataType('INT', [11], new OptionsArray(['UNSIGNED'])), ), new CreateDefinition( '', null, - new Key('', [['name' => 'id']], 'PRIMARY KEY') + new Key('', [['name' => 'id']], 'PRIMARY KEY'), ), ]; @@ -119,7 +158,7 @@ public function testBuilderTable() " `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,\n" . " PRIMARY KEY (`id`)\n" . ') ', - $stmt->build() + $stmt->build(), ); /* Assertion 2 */ @@ -152,9 +191,24 @@ public function testBuilderTable() ') ENGINE=InnoDB DEFAULT CHARSET=latin1'; $parser = new Parser($query); $this->assertEquals($query, $parser->statements[0]->build()); + + /* Assertion 5 */ + $parser = new Parser( + 'CREATE table table_name WITH' . + ' cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 )' . + ' SELECT col1 FROM cte', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE TABLE table_name WITH' . + ' cte(col1) AS (SELECT 1 UNION ALL SELECT 2)' . + ' SELECT col1 FROM cte', + $stmt->build(), + ); } - public function testBuilderPartitions() + public function testBuilderPartitions(): void { /* Assertion 1 */ $query = 'CREATE TABLE ts (' . "\n" @@ -201,59 +255,53 @@ public function testBuilderPartitions() $this->assertEquals($query, $parser->statements[0]->build()); } - public function partitionQueries() + /** @psalm-return iterable */ + public static function partitionQueriesProvider(): iterable { - return [ - [ - 'subparts' => << << [ + <<<'SQL' + 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 + ) + ) + SQL, + ]; + + yield 'partitions' => [ + <<<'SQL' + CREATE TABLE ptest ( + `event_date` date NOT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC + PARTITION BY HASH (TO_DAYS(event_date)) + ( + PARTITION p0 ENGINE=InnoDB, + PARTITION p1 ENGINE=InnoDB, + PARTITION p2 ENGINE=InnoDB, + PARTITION p3 ENGINE=InnoDB, + PARTITION p4 ENGINE=InnoDB + ) + SQL, ]; } - /** - * @dataProvider partitionQueries - * - * @param string $query - */ - public function testBuilderPartitionsEngine($query) + #[DataProvider('partitionQueriesProvider')] + public function testBuilderPartitionsEngine(string $query): void { $parser = new Parser($query); $stmt = $parser->statements[0]; @@ -261,34 +309,387 @@ public function testBuilderPartitionsEngine($query) $this->assertEquals($query, $stmt->build()); } - public function testBuilderView() + public function testBuilderView(): void { + $parser = new Parser( + 'CREATE OR REPLACE VIEW xviewmytable AS SELECT mytable.id ' + . 'AS id, mytable.personid AS personid FROM mytable ' + . 'WHERE (mytable.birth > \'1990-01-19\') GROUP BY mytable.personid ;', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE OR REPLACE VIEW xviewmytable AS SELECT mytable.id ' + . 'AS `id`, mytable.personid AS `personid` FROM mytable ' + . 'WHERE (mytable.birth > \'1990-01-19\') GROUP BY mytable.personid ', + $stmt->build(), + ); + $parser = new Parser( 'CREATE VIEW myView (vid, vfirstname) AS ' . - 'SELECT id, first_name FROM employee WHERE id = 1' + 'SELECT id, first_name FROM employee WHERE id = 1', ); $stmt = $parser->statements[0]; $this->assertEquals( 'CREATE VIEW myView (vid, vfirstname) AS ' . 'SELECT id, first_name FROM employee WHERE id = 1 ', - $stmt->build() + $stmt->build(), ); $parser = new Parser( 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . - 'SELECT id, first_name FROM employee WHERE id = 1' + 'SELECT id, first_name FROM employee WHERE id = 1', ); $stmt = $parser->statements[0]; $this->assertEquals( 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . 'SELECT id, first_name FROM employee WHERE id = 1 ', - $stmt->build() + $stmt->build(), + ); + + // Assert the builder can build wrong syntax select expressions + $parser = new Parser( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1', + ); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1 ', + $stmt->build(), + ); + + $parser = new Parser( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1 ' . + 'UNION ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 2 ', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1 ' . + 'UNION ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 2 ', + $stmt->build(), + ); + + $parser = new Parser('CREATE VIEW `view_programlevelpartner` AS SELECT `p`.`country_id`' + . 'AS `country_id` FROM `program_level_partner` `p` ORDER BY `p`.`id` asc'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'CREATE VIEW `view_programlevelpartner` AS SELECT `p`.`country_id`' + . ' AS `country_id` FROM `program_level_partner` AS `p` ORDER BY `p`.`id` ASC ', + $stmt->build(), + ); + + $parser = new Parser('CREATE VIEW `view_zg_bycountry` AS ' + . 'SELECT `d`.`zg_id` FROM `view_zg_value` AS `d` GROUP BY `d`.`ind_id`;'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'CREATE VIEW `view_zg_bycountry` AS ' + . 'SELECT `d`.`zg_id` FROM `view_zg_value` AS `d` GROUP BY `d`.`ind_id` ', + $stmt->build(), + ); + + $parser = new Parser('CREATE view view_name AS WITH aa(col1)' + . ' AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte AS `d` '); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'CREATE view view_name AS WITH aa(col1)' + . ' AS (SELECT 1 UNION ALL SELECT 2) SELECT col1 FROM cte AS `d` ', + $stmt->build(), + ); + + $parser = new Parser( + implode("\n", [ + 'CREATE VIEW number_sequence_view AS', + 'WITH RECURSIVE number_sequence AS (', + ' SELECT 1 AS `number`', + ' UNION ALL', + ' SELECT `number` + 1', + ' FROM number_sequence', + ' WHERE `number` < 5', + ')', + 'SELECT * FROM number_sequence;', + ]), + ); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'CREATE VIEW number_sequence_view AS' + . ' WITH RECURSIVE number_sequence AS (' + . 'SELECT 1 AS `number`' + . ' UNION ALL' + . ' SELECT `number`+ 1' + . ' FROM number_sequence' + . ' WHERE `number` < 5' + . ')' + . ' SELECT * FROM number_sequence ', + $stmt->build(), ); } - public function testBuilderTrigger() + public function testBuilderViewComplex(): void + { + $parser = new Parser( + 'CREATE VIEW withclause AS' . "\n" + . "\n" + . 'WITH cte AS (' . "\n" + . 'SELECT p.name, p.shape' . "\n" + . 'FROM gis_all as p' . "\n" + . ')' . "\n" + . "\n" + . 'SELECT cte.*' . "\n" + . 'FROM cte' . "\n" + . 'CROSS JOIN gis_all;', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE VIEW withclause AS ' + . 'WITH cte AS (' + . 'SELECT p.name, p.shape ' + . 'FROM gis_all AS `p`' + . ') ' + . 'SELECT cte.* ' + . 'FROM cte ' + . 'CROSS JOIN gis_all ', + $stmt->build(), + ); + $parser = new Parser( + 'CREATE VIEW withclause2 AS' . "\n" + . "\n" + . 'WITH cte AS (' . "\n" + . "\t" . 'SELECT p.name, p.shape' . "\n" + . "\t" . 'FROM gis_all as p' . "\n" + . '), cte2 AS (' . "\n" + . "\t" . 'SELECT p.name as n2, p.shape as sh2' . "\n" + . "\t" . 'FROM gis_all as p' . "\n" + . ')' . "\n" + . "\n" + . 'SELECT cte.*,cte2.*' . "\n" + . 'FROM cte,cte2' . "\n" + . 'CROSS JOIN gis_all;', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE VIEW withclause2 AS ' + . '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 ', + $stmt->build(), + ); + } + + public function testBuilderCreateProcedure(): void + { + $parser = new Parser( + 'CREATE DEFINER=`root`@`%`' + . ' PROCEDURE `test2`(IN `_var` INT) DETERMINISTIC' + . ' MODIFIES SQL DATA SELECT _var', + ); + + $stmt = $parser->statements[0]; + $this->assertInstanceOf(CreateStatement::class, $stmt); + + $this->assertSame( + 'CREATE DEFINER=`root`@`%`' + . ' PROCEDURE `test2` (IN `_var` INT) DETERMINISTIC' + . ' MODIFIES SQL DATA SELECT _var', + $stmt->build(), + ); + + $parser = new Parser( + 'CREATE DEFINER=`root`@`%`' + . ' PROCEDURE `test2`(IN `_var` INT) NOT DETERMINISTIC NO SQL' + . ' SQL SECURITY INVOKER NO SQL SQL SECURITY INVOKER SELECT _var', + ); + + $stmt = $parser->statements[0]; + $this->assertInstanceOf(CreateStatement::class, $stmt); + + $this->assertSame( + 'CREATE DEFINER=`root`@`%`' + . ' PROCEDURE `test2` (IN `_var` INT) NOT DETERMINISTIC NO SQL' + . ' SQL SECURITY INVOKER NO SQL SQL SECURITY INVOKER SELECT _var', + $stmt->build(), + ); + + $this->assertNotNull($stmt->entityOptions); + $this->assertFalse($stmt->entityOptions->isEmpty()); + $this->assertNotNull($stmt->options); + $this->assertFalse($stmt->options->isEmpty()); + $this->assertSame( + 'DEFINER=`root`@`%` PROCEDURE', + $stmt->options->__toString(), + ); + + $this->assertNotNull($stmt->name); + $this->assertSame( + '`test2`', + $stmt->name->__toString(), + ); + + $this->assertNotNull($stmt->parameters); + $this->assertSame( + '(IN `_var` INT)', + ParameterDefinitions::buildAll($stmt->parameters), + ); + + $this->assertSame( + 'NOT DETERMINISTIC NO SQL SQL SECURITY INVOKER NO SQL SQL SECURITY INVOKER', + $stmt->entityOptions->__toString(), + ); + + $this->assertSame( + 'SELECT _var', + TokensList::buildFromArray($stmt->body), + ); + } + + public function testBuilderCreateFunction(): void + { + $parser = new Parser( + 'DELIMITER $$' . "\n" + . 'CREATE DEFINER=`root`@`localhost`' + . ' FUNCTION `inventory_in_stock`(`p_inventory_id` INT) RETURNS tinyint(1)' + . ' READS SQL DATA' + . ' COMMENT \'My best function written by a friend\'\'s friend\'' + . ' BEGIN' . "\n" + . ' DECLARE v_rentals INT;' . "\n" + . ' DECLARE v_out INT;' . "\n" + . "\n" + . ' ' . "\n" + . ' ' . "\n" + . "\n" + . ' SELECT COUNT(*) INTO v_rentals' . "\n" + . ' FROM rental' . "\n" + . ' WHERE inventory_id = p_inventory_id;' . "\n" + . "\n" + . ' IF v_rentals = 0 THEN' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . "\n" + . ' SELECT COUNT(rental_id) INTO v_out' . "\n" + . ' FROM inventory LEFT JOIN rental USING(inventory_id)' . "\n" + . ' WHERE inventory.inventory_id = p_inventory_id' . "\n" + . ' AND rental.return_date IS NULL;' . "\n" + . "\n" + . ' IF v_out > 0 THEN' . "\n" + . ' RETURN FALSE;' . "\n" + . ' ELSE' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . 'END', + ); + + $stmt = $parser->statements[0]; + $this->assertInstanceOf(CreateStatement::class, $stmt); + + $this->assertSame( + 'CREATE DEFINER=`root`@`localhost`' + . ' FUNCTION `inventory_in_stock` (`p_inventory_id` INT) RETURNS TINYINT(1)' + . ' READS SQL DATA' + . ' COMMENT \'My best function written by a friend\'\'s friend\'' + . ' BEGIN' . "\n" + . ' DECLARE v_rentals INT;' . "\n" + . ' DECLARE v_out INT;' . "\n" + . "\n" + . ' ' . "\n" + . ' ' . "\n" + . "\n" + . ' SELECT COUNT(*) INTO v_rentals' . "\n" + . ' FROM rental' . "\n" + . ' WHERE inventory_id = p_inventory_id;' . "\n" + . "\n" + . ' IF v_rentals = 0 THEN' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . "\n" + . ' SELECT COUNT(rental_id) INTO v_out' . "\n" + . ' FROM inventory LEFT JOIN rental USING(inventory_id)' . "\n" + . ' WHERE inventory.inventory_id = p_inventory_id' . "\n" + . ' AND rental.return_date IS NULL;' . "\n" + . "\n" + . ' IF v_out > 0 THEN' . "\n" + . ' RETURN FALSE;' . "\n" + . ' ELSE' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . 'END', + $stmt->build(), + ); + + $this->assertNotNull($stmt->entityOptions); + $this->assertFalse($stmt->entityOptions->isEmpty()); + $this->assertNotNull($stmt->options); + $this->assertFalse($stmt->options->isEmpty()); + + $this->assertSame( + 'DEFINER=`root`@`localhost` FUNCTION', + $stmt->options->__toString(), + ); + + $this->assertNotNull($stmt->name); + $this->assertSame( + '`inventory_in_stock`', + $stmt->name->__toString(), + ); + + $this->assertNotNull($stmt->parameters); + $this->assertSame( + '(`p_inventory_id` INT)', + ParameterDefinitions::buildAll($stmt->parameters), + ); + + $this->assertSame( + 'READS SQL DATA COMMENT \'My best function written by a friend\'\'s friend\'', + $stmt->entityOptions->__toString(), + ); + + $this->assertSame( + 'BEGIN' . "\n" + . ' DECLARE v_rentals INT;' . "\n" + . ' DECLARE v_out INT;' . "\n" + . "\n" + . ' ' . "\n" + . ' ' . "\n" + . "\n" + . ' SELECT COUNT(*) INTO v_rentals' . "\n" + . ' FROM rental' . "\n" + . ' WHERE inventory_id = p_inventory_id;' . "\n" + . "\n" + . ' IF v_rentals = 0 THEN' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . "\n" + . ' SELECT COUNT(rental_id) INTO v_out' . "\n" + . ' FROM inventory LEFT JOIN rental USING(inventory_id)' . "\n" + . ' WHERE inventory.inventory_id = p_inventory_id' . "\n" + . ' AND rental.return_date IS NULL;' . "\n" + . "\n" + . ' IF v_out > 0 THEN' . "\n" + . ' RETURN FALSE;' . "\n" + . ' ELSE' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . 'END', + TokensList::buildFromArray($stmt->body), + ); + } + + public function testBuilderTrigger(): void { $stmt = new CreateStatement(); @@ -296,46 +697,204 @@ public function testBuilderTrigger() $stmt->name = new Expression('ins_sum'); $stmt->entityOptions = new OptionsArray(['BEFORE', 'INSERT']); $stmt->table = new Expression('account'); - $stmt->body = 'SET @sum = @sum + NEW.amount'; + $stmt->body = [ + new Token('SET', TokenType::Keyword), + new Token(' ', TokenType::Whitespace), + new Token('@sum', TokenType::None), + new Token(' ', TokenType::Whitespace), + new Token('=', TokenType::Operator), + new Token(' ', TokenType::Whitespace), + new Token('@sum', TokenType::None), + new Token(' ', TokenType::Whitespace), + new Token('+', TokenType::Operator), + new Token(' ', TokenType::Whitespace), + new Token('NEW', TokenType::Keyword), + new Token('.', TokenType::Operator), + new Token('amount', TokenType::None), + ]; $this->assertEquals( 'CREATE TRIGGER ins_sum BEFORE INSERT ON account ' . 'FOR EACH ROW SET @sum = @sum + NEW.amount', - $stmt->build() + $stmt->build(), ); } - public function testBuilderRoutine() + public function testBuilderRoutine(): void { $parser = new Parser( + 'DELIMITER $$' . "\n" . 'CREATE FUNCTION test (IN `i` INT) RETURNS VARCHAR ' . 'BEGIN ' . 'DECLARE name VARCHAR DEFAULT ""; ' . 'SELECT name INTO name FROM employees WHERE id = i; ' . 'RETURN name; ' . - 'END' + 'END', ); $stmt = $parser->statements[0]; $this->assertEquals( 'CREATE FUNCTION test (IN `i` INT) RETURNS VARCHAR ' . - 'BEGIN ' . + ' BEGIN ' . 'DECLARE name VARCHAR DEFAULT ""; ' . 'SELECT name INTO name FROM employees WHERE id = i; ' . 'RETURN name; ' . 'END', - $stmt->build() + $stmt->build(), + ); + } + + public function testBuildSelect(): void + { + $parser = new Parser('CREATE TABLE new_tbl SELECT * FROM orig_tbl'); + $this->assertEquals( + 'CREATE TABLE new_tbl SELECT * FROM orig_tbl', + $parser->statements[0]->build(), + ); + } + + public function testBuildCreateTableSortedIndex(): void + { + $parser = new Parser( + <<<'SQL' +CREATE TABLE `entries` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `fk_ug_id` int(11) DEFAULT NULL, + `amount` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `entries__ug` (`fk_ug_id` DESC), + KEY `entries__ug2` (`fk_ug_id` ASC), + KEY `33` (`id` ASC, `fk_ug_id` DESC) +) /*!50100 TABLESPACE `innodb_system` */ ENGINE=InnoDB AUTO_INCREMENT=4465 DEFAULT CHARSET=utf8 +SQL, + ); + + $stmt = $parser->statements[0]; + $this->assertInstanceOf(CreateStatement::class, $stmt); + + $tableBody = <<<'SQL' +( + `id` int(11) NOT NULL AUTO_INCREMENT, + `fk_ug_id` int(11) DEFAULT NULL, + `amount` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `entries__ug` (`fk_ug_id` DESC), + KEY `entries__ug2` (`fk_ug_id` ASC), + KEY `33` (`id` ASC,`fk_ug_id` DESC) +) +SQL; + + $this->assertIsArray($stmt->fields); + $this->assertEquals( + $tableBody, + CreateDefinitions::buildAll($stmt->fields), + ); + + $this->assertEquals( + 'CREATE TABLE `entries` ' + . $tableBody + . ' ENGINE=InnoDB AUTO_INCREMENT=4465 DEFAULT CHARSET=utf8 TABLESPACE `innodb_system`', + $stmt->build(), ); } - public function testBuildSelect() + public function testBuildCreateTableComplexIndexes(): void { + // phpcs:disable Generic.Files.LineLength.TooLong $parser = new Parser( - 'CREATE TABLE new_tbl SELECT * FROM orig_tbl' + <<<'SQL' +CREATE TABLE `page_rebuild_control` ( + `proc_row_number` int DEFAULT NULL, + `place_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `waterway_id` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cache_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `place_active` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `alias_type` int NOT NULL DEFAULT '0', + `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `time_taken` float DEFAULT NULL, + PRIMARY KEY (`place_id`,`place_type`) USING BTREE, + KEY `place_type_idx` (`place_type`(10)), + KEY `cached_time_idx` (`cache_updated`), + KEY `active_idx` (`place_active`), + KEY `status_idx` (`status`), + KEY `waterway_idx` (`waterway_id`), + KEY `time_taken_idx` (`time_taken`), + KEY `updated_tz_ind3` ( + -- my expression + (convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB')) + ) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes_commented` ( + -- first expression + ( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB') + ) + , + -- second expression + ( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR') + ) + ) + -- and now some options + COMMENT 'haha, this is a complex and indented case', + KEY `alias_type_idx` (`alias_type`), + KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB')), (convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR'))) COMMENT 'bar\'s', + KEY `updated_tz_ind` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +SQL, ); + // phpcs:enable + + $stmt = $parser->statements[0]; + $this->assertInstanceOf(CreateStatement::class, $stmt); + + // phpcs:disable Generic.Files.LineLength.TooLong + $tableBody = <<<'SQL' +( + `proc_row_number` int DEFAULT NULL, + `place_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `waterway_id` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cache_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `place_active` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `alias_type` int NOT NULL DEFAULT '0', + `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `time_taken` float DEFAULT NULL, + PRIMARY KEY (`place_id`,`place_type`) USING BTREE, + KEY `place_type_idx` (`place_type`(10)), + KEY `cached_time_idx` (`cache_updated`), + KEY `active_idx` (`place_active`), + KEY `status_idx` (`status`), + KEY `waterway_idx` (`waterway_id`), + KEY `time_taken_idx` (`time_taken`), + KEY `updated_tz_ind3` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes_commented` (( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB') + ), ( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR') + )) COMMENT 'haha, this is a complex and indented case', + KEY `alias_type_idx` (`alias_type`), + KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB')), (convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR'))) COMMENT 'bar\'s', + KEY `updated_tz_ind` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) +) +SQL; + // phpcs:enable + + $this->assertIsArray($stmt->fields); $this->assertEquals( - 'CREATE TABLE new_tbl SELECT * FROM orig_tbl', - $parser->statements[0]->build() + $tableBody, + CreateDefinitions::buildAll($stmt->fields), + ); + + $this->assertEquals( + 'CREATE TABLE `page_rebuild_control` ' + . $tableBody + . ' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci', + $stmt->build(), ); } } diff --git a/tests/Builder/DeleteStatementTest.php b/tests/Builder/DeleteStatementTest.php index 0327e0387..60f1e7287 100644 --- a/tests/Builder/DeleteStatementTest.php +++ b/tests/Builder/DeleteStatementTest.php @@ -1,4 +1,5 @@ assertEquals($query, $stmt->build()); } - public function testBuilderMultiTable() + public function testBuilderMultiTable(): void { /* Assertion 1 */ $query = 'DELETE QUICK table1, table2.* FROM table1 AS `t1`, table2 AS `t2`'; diff --git a/tests/Builder/ExplainStatementTest.php b/tests/Builder/ExplainStatementTest.php index 7b6215f55..58abdc742 100644 --- a/tests/Builder/ExplainStatementTest.php +++ b/tests/Builder/ExplainStatementTest.php @@ -1,4 +1,5 @@ statements[0]; + $this->assertEquals( + 'EXPLAIN SELECT * FROM test', + $stmt->build(), + ); + + /* Assertion 2 */ + $query = 'EXPLAIN ANALYZE SELECT * FROM tablename;'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'EXPLAIN ANALYZE SELECT * FROM tablename', + $stmt->build(), + ); + + /* Assertion 3 */ + $query = 'DESC ANALYZE SELECT * FROM tablename;'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'DESC ANALYZE SELECT * FROM tablename', + $stmt->build(), + ); + + /* Assertion 4 */ + $query = 'ANALYZE SELECT * FROM tablename;'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'ANALYZE SELECT * FROM tablename', + $stmt->build(), + ); + + /* Assertion 5 */ + $query = 'DESCRIBE tablename;'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'DESCRIBE `tablename`', + $stmt->build(), + ); + + /* Assertion 6 */ + $query = 'DESC FOR CONNECTION 458'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'DESC FOR CONNECTION 458', + $stmt->build(), + ); + + /* Assertion 7 */ + $query = 'EXPLAIN FORMAT=TREE SELECT * FROM db;'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'EXPLAIN FORMAT=TREE SELECT * FROM db', + $stmt->build(), + ); + /* Assertion 8 */ + $query = 'DESCRIBE tablename colname;'; $parser = new Parser($query); $stmt = $parser->statements[0]; + $this->assertEquals( + 'DESCRIBE `tablename` `colname`', + $stmt->build(), + ); + /* Assertion 9 */ + $query = 'DESCRIBE tablename \'col%me\';'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'DESCRIBE `tablename` `col%me`', + $stmt->build(), + ); + + /* Assertion 9 */ + $query = 'DESCRIBE db.tablename \'col%me\';'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; $this->assertEquals( - ' EXPLAIN SELECT * FROM test', - $stmt->build() + 'DESCRIBE `db`.`tablename` `col%me`', + $stmt->build(), ); } } diff --git a/tests/Builder/InsertStatementTest.php b/tests/Builder/InsertStatementTest.php index cf4614364..eb928bb1a 100644 --- a/tests/Builder/InsertStatementTest.php +++ b/tests/Builder/InsertStatementTest.php @@ -1,4 +1,5 @@ statements[0]; $this->assertEquals( 'INSERT INTO tbl(`col1`, `col2`, `col3`) VALUES (1, "str", 3.14)', - $stmt->build() + $stmt->build(), ); /* Assertion 2 */ - /* Reserved keywords (with backqoutes as field name) */ - $parser = new Parser( - 'INSERT INTO tbl(`order`) VALUES (1)' - ); + /* Reserved keywords (with backquotes as field name) */ + $parser = new Parser('INSERT INTO tbl(`order`) VALUES (1)'); $stmt = $parser->statements[0]; $this->assertEquals( 'INSERT INTO tbl(`order`) VALUES (1)', - $stmt->build() + $stmt->build(), ); /* Assertion 3 */ /* INSERT ... SET ... */ - $parser = new Parser( - 'INSERT INTO tbl SET FOO = 1' - ); + $parser = new Parser('INSERT INTO tbl SET FOO = 1'); $stmt = $parser->statements[0]; $this->assertEquals( 'INSERT INTO tbl SET FOO = 1', - $stmt->build() + $stmt->build(), ); /* Assertion 4 */ /* INSERT ... SELECT ... */ - $parser = new Parser( - 'INSERT INTO tbl SELECT * FROM bar' - ); + $parser = new Parser('INSERT INTO tbl SELECT * FROM bar'); $stmt = $parser->statements[0]; $this->assertEquals( 'INSERT INTO tbl SELECT * FROM bar', - $stmt->build() + $stmt->build(), ); /* Assertion 5 */ /* INSERT ... ON DUPLICATE KEY UPDATE ... */ - $parser = new Parser( - 'INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1' - ); + $parser = new Parser('INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1'); $stmt = $parser->statements[0]; $this->assertEquals( 'INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1', - $stmt->build() + $stmt->build(), ); /* Assertion 6 */ /* INSERT [OPTIONS] INTO ... */ - $parser = new Parser( - 'INSERT DELAYED IGNORE INTO tbl SELECT * FROM bar' - ); + $parser = new Parser('INSERT DELAYED IGNORE INTO tbl SELECT * FROM bar'); $stmt = $parser->statements[0]; $this->assertEquals( 'INSERT DELAYED IGNORE INTO tbl SELECT * FROM bar', - $stmt->build() + $stmt->build(), ); } } diff --git a/tests/Builder/LoadStatementTest.php b/tests/Builder/LoadStatementTest.php index 051e13d03..423295efd 100644 --- a/tests/Builder/LoadStatementTest.php +++ b/tests/Builder/LoadStatementTest.php @@ -1,4 +1,5 @@ assertEquals( 'LOAD DATA CONCURRENT INFILE ' . '\'employee1.txt\' INTO TABLE employee', - $stmt->build() + $stmt->build(), ); /* Assertion 2 */ @@ -35,7 +36,7 @@ public function testBuilder() 'LOAD DATA INFILE \'/tmp/test.txt\' ' . 'INTO TABLE test FIELDS TERMINATED BY ' . '\',\' IGNORE 1 LINES', - $stmt->build() + $stmt->build(), ); /* Assertion 3 */ @@ -50,7 +51,7 @@ public function testBuilder() 'LOAD DATA INFILE \'employee3.txt\' ' . 'INTO TABLE employee FIELDS TERMINATED BY ' . '\',\' ENCLOSED BY \'"\'', - $stmt->build() + $stmt->build(), ); /* Assertion 4 */ @@ -71,7 +72,7 @@ public function testBuilder() . 'COLUMNS TERMINATED BY \',\' ' . 'LINES TERMINATED BY \';\' ' . 'IGNORE 1 LINES (col1, col2) SET @a = 1', - $stmt->build() + $stmt->build(), ); /* Assertion 5 */ @@ -84,7 +85,7 @@ public function testBuilder() $this->assertEquals( 'LOAD DATA INFILE \'/tmp/test.txt\' REPLACE ' . 'INTO TABLE test COLUMNS TERMINATED BY \',\' IGNORE 1 ROWS', - $stmt->build() + $stmt->build(), ); /* Assertion 6 */ @@ -101,7 +102,7 @@ public function testBuilder() . 'INTO TABLE test PARTITION (p0, p1, p2) CHARACTER SET \'utf8\' ' . 'COLUMNS TERMINATED BY \',\' LINES TERMINATED BY \';\' ' . 'IGNORE 1 LINES (col1, col2) SET @a = 1', - $stmt->build() + $stmt->build(), ); } } diff --git a/tests/Builder/LockStatementTest.php b/tests/Builder/LockStatementTest.php index 8593a8794..e20caad76 100644 --- a/tests/Builder/LockStatementTest.php +++ b/tests/Builder/LockStatementTest.php @@ -1,4 +1,5 @@ statements[0]; $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); $query = 'RENAME TABLE current_db.tbl_name TO other_db.tbl_name'; - $parser = new Parser( - $query - ); + $parser = new Parser($query); $stmt = $parser->statements[0]; $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); $query = 'RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2, old_table3 TO new_table3'; - $parser = new Parser( - $query - ); + $parser = new Parser($query); $stmt = $parser->statements[0]; $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); } } diff --git a/tests/Builder/ReplaceStatementTest.php b/tests/Builder/ReplaceStatementTest.php index ee5b95a7a..36c5ddde0 100644 --- a/tests/Builder/ReplaceStatementTest.php +++ b/tests/Builder/ReplaceStatementTest.php @@ -1,4 +1,5 @@ statements[0]; $this->assertEquals( 'REPLACE INTO tbl(`col1`, `col2`, `col3`) VALUES (1, "str", 3.14)', - $stmt->build() + $stmt->build(), ); } - public function testBuilderSet() + public function testBuilderSet(): void { - $parser = new Parser( - 'REPLACE INTO tbl(col1, col2, col3) SET col1=1, col2="str", col3=3.14' - ); + $parser = new Parser('REPLACE INTO tbl(col1, col2, col3) SET col1=1, col2="str", col3=3.14'); $stmt = $parser->statements[0]; $this->assertEquals( 'REPLACE INTO tbl(`col1`, `col2`, `col3`) SET col1 = 1, col2 = "str", col3 = 3.14', - $stmt->build() + $stmt->build(), ); } - public function testBuilderSelect() + public function testBuilderSelect(): void { - $parser = new Parser( - 'REPLACE INTO tbl(col1, col2, col3) SELECT col1, col2, col3 FROM tbl2' - ); + $parser = new Parser('REPLACE INTO tbl(col1, col2, col3) SELECT col1, col2, col3 FROM tbl2'); $stmt = $parser->statements[0]; $this->assertEquals( 'REPLACE INTO tbl(`col1`, `col2`, `col3`) SELECT col1, col2, col3 FROM tbl2', - $stmt->build() + $stmt->build(), ); } - public function testBuilderSelectDelayed() + public function testBuilderSelectDelayed(): void { - $parser = new Parser( - 'REPLACE DELAYED INTO tbl(col1, col2, col3) SELECT col1, col2, col3 FROM tbl2' - ); + $parser = new Parser('REPLACE DELAYED INTO tbl(col1, col2, col3) SELECT col1, col2, col3 FROM tbl2'); $stmt = $parser->statements[0]; $this->assertEquals( 'REPLACE DELAYED INTO tbl(`col1`, `col2`, `col3`) SELECT col1, col2, col3 FROM tbl2', - $stmt->build() + $stmt->build(), ); } } diff --git a/tests/Builder/SelectStatementTest.php b/tests/Builder/SelectStatementTest.php index 5d9836ff7..d150c0084 100644 --- a/tests/Builder/SelectStatementTest.php +++ b/tests/Builder/SelectStatementTest.php @@ -1,4 +1,5 @@ assertEquals( 'SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ' . 'ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)', - $stmt->build() + $stmt->build(), ); + + $parser = new Parser('SELECT NULL IS NULL'); + $stmt = $parser->statements[0]; + + $this->assertEquals('SELECT NULL IS NULL', $stmt->build()); + + $parser = new Parser('SELECT NOT 1'); + $stmt = $parser->statements[0]; + + $this->assertEquals('SELECT NOT 1', $stmt->build()); + + $parser = new Parser('SELECT 1 BETWEEN 0 AND 2'); + $stmt = $parser->statements[0]; + + $this->assertEquals('SELECT 1 BETWEEN 0 AND 2', $stmt->build()); + + $parser = new Parser("SELECT 'a' NOT REGEXP '^[a-d]'"); + $stmt = $parser->statements[0]; + + $this->assertEquals("SELECT 'a' NOT REGEXP '^[a-d]'", $stmt->build()); + + $parser = new Parser("SELECT 'a' RLIKE 'a'"); + $stmt = $parser->statements[0]; + + $this->assertEquals("SELECT 'a' RLIKE 'a'", $stmt->build()); } - public function testBuilderUnion() + public function testBuilderUnion(): void { $parser = new Parser('SELECT 1 UNION SELECT 2'); $stmt = $parser->statements[0]; $this->assertEquals( 'SELECT 1 UNION SELECT 2', - $stmt->build() + $stmt->build(), ); } - public function testBuilderAlias() + public function testBuilderWithIsNull(): void + { + $parser = new Parser('SELECT `test3`.`t1` is not null AS `is_not_null` FROM `test3` ;'); + $stmt = $parser->statements[0]; + + $this->assertEquals('SELECT `test3`.`t1` is not null AS `is_not_null` FROM `test3`', $stmt->build()); + + $parser = new Parser('SELECT test3.t1 is null AS `col1` FROM test3'); + $stmt = $parser->statements[0]; + + $this->assertEquals('SELECT test3.t1 is null AS `col1` FROM test3', $stmt->build()); + } + + public function testBuilderOrderByNull(): void + { + $query = 'SELECT * FROM some_table ORDER BY some_col IS NULL DESC;'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals('SELECT * FROM some_table ORDER BY some_col IS NULL DESC', $stmt->build()); + + $query = 'SELECT * FROM some_table ORDER BY some_col IS NOT NULL;'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals('SELECT * FROM some_table ORDER BY some_col IS NOT NULL ASC', $stmt->build()); + } + + public function testBuilderAlias(): void { $parser = new Parser( 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' - . 'ORDER BY scb.id DESC LIMIT 0,300' + . 'ORDER BY scb.id DESC LIMIT 0,300', ); $stmt = $parser->statements[0]; @@ -49,11 +103,147 @@ public function testBuilderAlias() . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' . 'ORDER BY scb.id DESC LIMIT 0, 300', - $stmt->build() + $stmt->build(), ); } - public function testBuilderEndOptions() + public function testBuilderAliasOrder(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id LIMIT 0,300', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id ASC LIMIT 0, 300', + $stmt->build(), + ); + } + + public function testBuilderAliasOrderMultiple(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, scb.order LIMIT 0,300', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, scb.order ASC LIMIT 0, 300', + $stmt->build(), + ); + } + + public function testBuilderAliasOrderMultipleFunctions(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, YEAR(scb.dob) LIMIT 0,300', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, YEAR(scb.dob) ASC LIMIT 0, 300', + $stmt->build(), + ); + } + + public function testBuilderAliasGroupByMultipleFunctions(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id, YEAR(scb.dob) LIMIT 0,300', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id, YEAR(scb.dob) LIMIT 0, 300', + $stmt->build(), + ); + } + + public function testBuilderAliasGroupByMultipleFunctionsOrderRemoved(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id ASC, YEAR(scb.dob) DESC LIMIT 0,300', + ); + $stmt = $parser->statements[0]; + + // The order is not kept, is this an expected behavior ? + // Ref: 4af06d24b041e499fb0e75ab3a98caf9a91700ef + // Issue: #154 + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id, YEAR(scb.dob) LIMIT 0, 300', + $stmt->build(), + ); + } + + public function testBuilderAliasOrderCase(): void + { + $parser = new Parser( + 'SELECT * FROM `world_borders` ORDER BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END LIMIT 0,300', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT * FROM `world_borders` ORDER BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END ASC LIMIT 0, 300', + $stmt->build(), + ); + } + + public function testBuilderAliasGroupByCase(): void + { + $parser = new Parser( + 'SELECT * FROM `world_borders` GROUP BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END LIMIT 0,300', + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT * FROM `world_borders` GROUP BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END LIMIT 0, 300', + $stmt->build(), + ); + } + + public function testBuilderEndOptions(): void { /* Assertion 1 */ $query = 'SELECT pid, name2 FROM tablename WHERE pid = 20 FOR UPDATE'; @@ -62,7 +252,7 @@ public function testBuilderEndOptions() $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); /* Assertion 2 */ @@ -72,11 +262,11 @@ public function testBuilderEndOptions() $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); } - public function testBuilderIntoOptions() + public function testBuilderIntoOptions(): void { /* Assertion 1 */ $query = 'SELECT a, b, a+b INTO OUTFILE "/tmp/result.txt"' @@ -88,11 +278,11 @@ public function testBuilderIntoOptions() $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); } - public function testBuildGroupBy() + public function testBuilderGroupBy(): void { $query = 'SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country'; $parser = new Parser($query); @@ -100,11 +290,47 @@ public function testBuildGroupBy() $this->assertEquals( $query, - $stmt->build() + $stmt->build(), + ); + } + + public function testBuilderGroupByWithRollup(): void + { + $query = 'SELECT year FROM movies GROUP BY year WITH ROLLUP'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build(), + ); + } + + public function testBuilderGroupByMultipleColumnsWithRollup(): void + { + $query = 'SELECT title, year FROM movies GROUP BY title, year WITH ROLLUP'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build(), + ); + } + + public function testBuilderGroupByWithRollupWithOtherClauses(): void + { + $query = 'SELECT year FROM movies GROUP BY year WITH ROLLUP ORDER BY year ASC LIMIT 0, 5'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build(), ); } - public function testBuildIndexHint() + public function testBuilderIndexHint(): void { $query = 'SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0'; $parser = new Parser($query); @@ -112,7 +338,80 @@ public function testBuildIndexHint() $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); } + + public function testBuilderSurroundedByParanthesisWithLimit(): void + { + $query = '(SELECT first_name FROM `actor` LIMIT 1, 2)'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT first_name FROM `actor` LIMIT 1, 2', + $stmt->build(), + ); + } + + public function testBuilderSelectFromWithForceIndex(): void + { + $query = 'SELECT *' + . ' FROM uno FORCE INDEX (id)'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + self::assertSame($query, $stmt->build()); + } + + /** + * Ensures issue #497 is fixed. + */ + public function testBuilderSelectFromJoinWithForceIndex(): void + { + $query = 'SELECT *' + . ' FROM uno' + . ' JOIN dos FORCE INDEX (two_id) ON dos.id = uno.id'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + self::assertSame($query, $stmt->build()); + } + + /** + * Ensures issue #593 is fixed. + */ + public function testBuilderSelectFromInnerJoinWithForceIndex(): void + { + $query = 'SELECT a.id, a.name, b.order_id, b.total' + . ' FROM customers a' + . ' INNER JOIN orders b FORCE INDEX (idx_customer_id)' + . ' ON a.id = b.customer_id' + . " WHERE a.status = 'active'"; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $expectedQuery = 'SELECT a.id, a.name, b.order_id, b.total' + . ' FROM customers AS `a`' + . ' INNER JOIN orders AS `b` FORCE INDEX (idx_customer_id)' + . ' ON a.id = b.customer_id' + . " WHERE a.status = 'active'"; + + self::assertSame($expectedQuery, $stmt->build()); + } + + public function testBuilderSelectAllFormsOfIndexHints(): void + { + $query = 'SELECT *' + . ' FROM one USE INDEX (col1) IGNORE INDEX (col1, col2) FORCE INDEX (col1, col2, col3)' + . ' INNER JOIN two USE INDEX (col3) IGNORE INDEX (col2, col3) FORCE INDEX (col1, col2, col3)' + . ' ON one.col1 = two.col2' + . ' WHERE 1 = 1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + self::assertSame($query, $stmt->build()); + } } diff --git a/tests/Builder/SetStatementTest.php b/tests/Builder/SetStatementTest.php index 406e36952..baca7f5ae 100644 --- a/tests/Builder/SetStatementTest.php +++ b/tests/Builder/SetStatementTest.php @@ -1,4 +1,5 @@ assertEquals( $query, - $stmt->build() + $stmt->build(), ); /* Assertion 2 */ @@ -29,7 +30,7 @@ public function testBuilderView() $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); /* Assertion 3 */ @@ -40,7 +41,7 @@ public function testBuilderView() $this->assertEquals( $query, - $stmt->build() + $stmt->build(), ); /* Assertion 4 */ @@ -51,7 +52,7 @@ public function testBuilderView() $this->assertEquals( 'SET NAMES \'utf8\' COLLATE \'utf8_general_ci\'', - $stmt->build() + $stmt->build(), ); /* Assertion 5 */ @@ -62,7 +63,117 @@ public function testBuilderView() $this->assertEquals( 'SET NAMES \'utf8\' DEFAULT', - $stmt->build() + $stmt->build(), + ); + + /* Assertion 6 */ + $query = 'SET sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 7 */ + $query = 'SET SESSION sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET SESSION sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 8 */ + $query = 'SET GLOBAL sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET GLOBAL sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 9 */ + $query = 'SET @@SESSION sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET SESSION sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 10 */ + $query = 'SET @@GLOBAL sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET GLOBAL sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 11 */ + $query = 'SET @@sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET @@sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 12 */ + $query = 'SET PERSIST sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 13 */ + $query = 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 14 */ + $query = 'SET @@PERSIST sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST sql_mode = \'TRADITIONAL\'', + $stmt->build(), + ); + + /* Assertion 15 */ + $query = 'SET @@PERSIST_ONLY sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'', + $stmt->build(), ); } } diff --git a/tests/Builder/StatementTest.php b/tests/Builder/StatementTest.php index b75b5d5ae..4b8ac4109 100644 --- a/tests/Builder/StatementTest.php +++ b/tests/Builder/StatementTest.php @@ -1,4 +1,5 @@ 10 OR actor.age > 25 ' . 'LIMIT 10, 1', - (string) $stmt + (string) $stmt, ); } + + /** + * @psalm-param array}> + * }> $expected + */ + #[DataProvider('getAliasesProvider')] + public function testGetAliases(string $query, string $db, array $expected): void + { + $parser = new Parser($query); + $this->assertInstanceOf(SelectStatement::class, $parser->statements[0]); + $this->assertEquals($expected, $parser->statements[0]->getAliases($db)); + } + + /** + * @psalm-return list}> + * }>}> + */ + public static 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', + [], + ], + [ + 'SELECT 1', + '', + [], + ], + [ + 'SELECT * FROM orders AS ord WHERE 1', + 'db', + [ + 'db' => [ + 'alias' => null, + 'tables' => [ + 'orders' => [ + 'alias' => 'ord', + 'columns' => [], + ], + ], + ], + ], + ], + ]; + } } diff --git a/tests/Builder/TransactionStatementTest.php b/tests/Builder/TransactionStatementTest.php index 5cd28c6c5..fdbde572d 100644 --- a/tests/Builder/TransactionStatementTest.php +++ b/tests/Builder/TransactionStatementTest.php @@ -1,4 +1,5 @@ build() + $stmt->build(), ); } } diff --git a/tests/Builder/TruncateStatementTest.php b/tests/Builder/TruncateStatementTest.php new file mode 100644 index 000000000..f848d82be --- /dev/null +++ b/tests/Builder/TruncateStatementTest.php @@ -0,0 +1,41 @@ +statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderDbtable(): void + { + $query = 'TRUNCATE TABLE mydb.mytable;'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderDbtableBackQuotes(): void + { + $query = 'TRUNCATE TABLE `mydb`.`mytable`;'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } +} diff --git a/tests/Builder/UpdateStatementTest.php b/tests/Builder/UpdateStatementTest.php new file mode 100644 index 000000000..1eed5e77e --- /dev/null +++ b/tests/Builder/UpdateStatementTest.php @@ -0,0 +1,40 @@ +statements[0]; + $this->assertEquals( + 'UPDATE user AS `u` LEFT JOIN user_detail AS `ud` ON u.id = ud.user_id SET ud.ip = \'33\' WHERE u.id = 1', + $stmt->build(), + ); + /* Assertion 2 */ + $parser = new Parser('update user u join user_detail ud on u.id = ud.user_id set ud.ip =\'33\' where u.id = 1'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'UPDATE user AS `u` JOIN user_detail AS `ud` ON u.id = ud.user_id SET ud.ip = \'33\' WHERE u.id = 1', + $stmt->build(), + ); + /* Assertion 3 */ + $parser = new Parser( + 'update user u inner join user_detail ud on u.id = ud.user_id set ud.ip =\'33\' where u.id = 1', + ); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'UPDATE user AS `u` INNER JOIN user_detail AS `ud` ON u.id = ud.user_id SET ud.ip = \'33\' WHERE u.id = 1', + $stmt->build(), + ); + } +} diff --git a/tests/Components/Array2dTest.php b/tests/Components/Array2dTest.php index 1c57a4320..ae7644830 100644 --- a/tests/Components/Array2dTest.php +++ b/tests/Components/Array2dTest.php @@ -1,15 +1,17 @@ getTokensList('(1, 2) +')); @@ -18,92 +20,76 @@ public function testParse() 1, 2, ], - $arrays[0]->values + $arrays[0]->values, ); } - public function testBuild() + public function testBuildAll(): void { $arrays = Array2d::parse(new Parser(), $this->getTokensList('(1, 2), (3, 4), (5, 6)')); $this->assertEquals( '(1, 2), (3, 4), (5, 6)', - Array2d::build($arrays) + ArrayObjs::buildAll($arrays), ); } - public function testParseErr1() + public function testParseErr1(): void { $parser = new Parser(); Array2d::parse($parser, $this->getTokensList('(1, 2 +')); - - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $this->assertCount(1, $parser->errors); + $this->assertEquals('A closing bracket was expected.', $parser->errors[0]->getMessage()); } - public function testParseErr2() + public function testParseErr2(): void { $parser = new Parser(); Array2d::parse($parser, $this->getTokensList('(1, 2 TABLE')); - - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $this->assertCount(1, $parser->errors); + $this->assertEquals('A closing bracket was expected.', $parser->errors[0]->getMessage()); } - public function testParseErr3() + public function testParseErr3(): void { $parser = new Parser(); Array2d::parse($parser, $this->getTokensList(')')); - $this->assertCount( - 1, - $parser->errors - ); + $this->assertCount(1, $parser->errors); $this->assertEquals( 'An opening bracket followed by a set of values was expected.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } - public function testParseErr4() + public function testParseErr4(): void { $parser = new Parser(); Array2d::parse($parser, $this->getTokensList('TABLE')); - $this->assertCount( - 1, - $parser->errors - ); + $this->assertCount(1, $parser->errors); $this->assertEquals( 'An opening bracket followed by a set of values was expected.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } - public function testParseErr5() + public function testParseErr5(): void { $parser = new Parser(); Array2d::parse($parser, $this->getTokensList('(1, 2),')); - $this->assertCount( - 1, - $parser->errors - ); + $this->assertCount(1, $parser->errors); $this->assertEquals( 'An opening bracket followed by a set of values was expected.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } - public function testParseErr6() + public function testParseErr6(): void { $parser = new Parser(); Array2d::parse($parser, $this->getTokensList('(1, 2),(3)')); - $this->assertCount( - 1, - $parser->errors - ); + $this->assertCount(1, $parser->errors); $this->assertEquals( '2 values were expected, but found 1.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } } diff --git a/tests/Components/ArrayObjTest.php b/tests/Components/ArrayObjTest.php index 2df1276ea..fe12f3371 100644 --- a/tests/Components/ArrayObjTest.php +++ b/tests/Components/ArrayObjTest.php @@ -1,53 +1,56 @@ assertEquals('(a, b)', ArrayObj::build($component)); + $this->assertEquals('(a, b)', $component->build()); } - public function testBuildValues() + public function testBuildValues(): void { $component = new ArrayObj([], ['a', 'b']); - $this->assertEquals('(a, b)', ArrayObj::build($component)); + $this->assertEquals('(a, b)', $component->build()); } - public function testParseType() + public function testParseType(): void { - $components = ArrayObj::parse( + $components = ArrayObjs::parse( new Parser(), $this->getTokensList('(1 + 2, 3 + 4)'), [ - 'type' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', - 'typeOptions' => [ - 'breakOnParentheses' => true, - ], - ] + 'type' => Expressions::class, + 'typeOptions' => ['breakOnParentheses' => true], + ], ); - $this->assertEquals($components[0]->expr, '1 + 2'); - $this->assertEquals($components[1]->expr, '3 + 4'); + $this->assertIsArray($components); + $this->assertInstanceOf(Expression::class, $components[0]); + $this->assertInstanceOf(Expression::class, $components[1]); + $this->assertEquals('1 + 2', $components[0]->expr); + $this->assertEquals('3 + 4', $components[1]->expr); } - /** - * @dataProvider parseProvider - * - * @param mixed $test - */ - public function testParse($test) + #[DataProvider('parseProvider')] + public function testParse(string $test): void { $this->runParserTest($test); } - public function parseProvider() + /** @return string[][] */ + public static function parseProvider(): array { return [ ['parser/parseArrayErr1'], diff --git a/tests/Components/CaseExpressionTest.php b/tests/Components/CaseExpressionTest.php index 2ea8f8bab..809d54816 100644 --- a/tests/Components/CaseExpressionTest.php +++ b/tests/Components/CaseExpressionTest.php @@ -1,127 +1,129 @@ getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE 1 WHEN 1 THEN "Some" ELSE "Other" END' + 'CASE 1 WHEN 1 THEN "Some" ELSE "Other" END', + $component->build(), ); } - public function testParseBuild2() + public function testParseBuild2(): void { $caseExprQuery = 'case when 1=1 then "India" else "Other" end'; - $component = CaseExpression::parse( + $component = CaseExpressions::parse( new Parser(), - $this->getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE WHEN 1=1 THEN "India" ELSE "Other" END' + 'CASE WHEN 1=1 THEN "India" ELSE "Other" END', + $component->build(), ); } - public function testParseBuild3() + public function testParseBuild3(): void { $caseExprQuery = 'case 1 when 1 then "Some" ' . 'when 2 then "SomeOther" else "Other" end'; - $component = CaseExpression::parse( + $component = CaseExpressions::parse( new Parser(), - $this->getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE 1 WHEN 1 THEN "Some" WHEN 2 THEN "SomeOther" ELSE "Other" END' + 'CASE 1 WHEN 1 THEN "Some" WHEN 2 THEN "SomeOther" ELSE "Other" END', + $component->build(), ); } - public function testParseBuild4() + public function testParseBuild4(): void { $caseExprQuery = 'case 1 when 1 then "Some" ' . 'when 2 then "SomeOther" end'; - $component = CaseExpression::parse( + $component = CaseExpressions::parse( new Parser(), - $this->getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE 1 WHEN 1 THEN "Some" WHEN 2 THEN "SomeOther" END' + 'CASE 1 WHEN 1 THEN "Some" WHEN 2 THEN "SomeOther" END', + $component->build(), ); } - public function testParseBuild5() + public function testParseBuild5(): void { $caseExprQuery = 'case when 1=1 then "Some" ' . 'when 1=2 then "SomeOther" else "Other" end'; - $component = CaseExpression::parse( + $component = CaseExpressions::parse( new Parser(), - $this->getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" ELSE "Other" END' + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" ELSE "Other" END', + $component->build(), ); } - public function testParseBuild6() + public function testParseBuild6(): void { $caseExprQuery = 'case when 1=1 then "Some" ' . 'when 1=2 then "SomeOther" end'; - $component = CaseExpression::parse( + $component = CaseExpressions::parse( new Parser(), - $this->getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END' + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END', + $component->build(), ); } - public function testParseBuild7() + public function testParseBuild7(): void { $caseExprQuery = 'case when 1=1 then "Some" ' . 'when 1=2 then "SomeOther" end AS foo'; - $component = CaseExpression::parse( + $component = CaseExpressions::parse( new Parser(), - $this->getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END AS `foo`' + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END AS `foo`', + $component->build(), ); } - public function testParseBuild8() + public function testParseBuild8(): void { $caseExprQuery = 'case when 1=1 then "Some" ' . 'when 1=2 then "SomeOther" end foo'; - $component = CaseExpression::parse( + $component = CaseExpressions::parse( new Parser(), - $this->getTokensList($caseExprQuery) + $this->getTokensList($caseExprQuery), ); $this->assertEquals( - CaseExpression::build($component), - 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END AS `foo`' + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END AS `foo`', + $component->build(), ); } - public function testBuildWithIncompleteCaseExpression() + public function testBuildWithIncompleteCaseExpression(): void { - $incomplete_case_expression_component = new CaseExpression(); - $this->assertEquals('CASE END', CaseExpression::build($incomplete_case_expression_component)); + $incompleteCaseExpressionComponent = new CaseExpression(); + $this->assertEquals('CASE END', $incompleteCaseExpressionComponent->build()); } } diff --git a/tests/Components/ComponentTest.php b/tests/Components/ComponentTest.php deleted file mode 100644 index ce7c68f0a..000000000 --- a/tests/Components/ComponentTest.php +++ /dev/null @@ -1,30 +0,0 @@ -expectExceptionMessage('Not implemented yet.'); - $this->expectException(\Exception::class); - Component::parse(new Parser(), new TokensList()); - } - - public function testBuild() - { - $this->expectExceptionMessage('Not implemented yet.'); - $this->expectException(\Exception::class); - Component::build(null); - } -} diff --git a/tests/Components/ConditionTest.php b/tests/Components/ConditionTest.php index eb8cca11d..d52188036 100644 --- a/tests/Components/ConditionTest.php +++ b/tests/Components/ConditionTest.php @@ -1,25 +1,35 @@ getTokensList('/* id = */ id = 10')); + $this->assertEquals('id = 10', $component[0]->expr); + } + + public function testParseBetween(): void { - $component = Condition::parse(new Parser(), $this->getTokensList('/* id = */ id = 10')); - $this->assertEquals($component[0]->expr, 'id = 10'); + $component = Conditions::parse( + new Parser(), + $this->getTokensList('(id BETWEEN 10 AND 20) OR (id BETWEEN 30 AND 40)'), + ); + $this->assertEquals('(id BETWEEN 10 AND 20)', $component[0]->expr); + $this->assertEquals('OR', $component[1]->expr); + $this->assertEquals('(id BETWEEN 30 AND 40)', $component[2]->expr); } - public function testParseBetween() + public function testParseAnd(): void { - $component = Condition::parse(new Parser(), $this->getTokensList('(id BETWEEN 10 AND 20) OR (id BETWEEN 30 AND 40)')); - $this->assertEquals($component[0]->expr, '(id BETWEEN 10 AND 20)'); - $this->assertEquals($component[1]->expr, 'OR'); - $this->assertEquals($component[2]->expr, '(id BETWEEN 30 AND 40)'); + $component = Conditions::parse(new Parser(), $this->getTokensList("`col` LIKE 'AND'")); + $this->assertEquals("`col` LIKE 'AND'", Conditions::buildAll($component)); } } diff --git a/tests/Components/CreateDefinitionTest.php b/tests/Components/CreateDefinitionTest.php index a1f50b8d3..b85db4a8b 100644 --- a/tests/Components/CreateDefinitionTest.php +++ b/tests/Components/CreateDefinitionTest.php @@ -1,83 +1,169 @@ getTokensList('(str TEXT, FULLTEXT INDEX indx (str))') + $this->getTokensList('(str TEXT, FULLTEXT INDEX indx (str))'), ); $this->assertEquals('str', $component[0]->name); + $this->assertNotNull($component[1]->key); $this->assertEquals('FULLTEXT INDEX', $component[1]->key->type); $this->assertEquals('indx', $component[1]->key->name); $this->assertEquals('FULLTEXT INDEX `indx` (`str`)', (string) $component[1]); } - public function testParseErr1() + public function testParse2(): void + { + $component = CreateDefinitions::parse( + new Parser(), + $this->getTokensList('(str TEXT NOT NULL INVISIBLE)'), + ); + $this->assertEquals('str', $component[0]->name); + $this->assertNotNull($component[0]->type); + $this->assertEquals('TEXT', $component[0]->type->name); + $this->assertNotNull($component[0]->options); + $this->assertTrue($component[0]->options->has('INVISIBLE')); + $this->assertTrue($component[0]->options->has('NOT NULL')); + } + + public function testParseErr1(): void { $parser = new Parser(); - $component = CreateDefinition::parse( + $component = CreateDefinitions::parse( $parser, - $this->getTokensList('(str TEXT, FULLTEXT INDEX indx (str)') + $this->getTokensList('(str TEXT, FULLTEXT INDEX indx (str)'), ); $this->assertCount(2, $component); $this->assertEquals( 'A closing bracket was expected.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } - public function testParseErr2() + public function testParseErr2(): void { $parser = new Parser(); - CreateDefinition::parse( + CreateDefinitions::parse( $parser, - $this->getTokensList(')') + $this->getTokensList(')'), ); $this->assertEquals( 'An opening bracket was expected.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } - public function testBuild() + public function testBuild(): void { $parser = new Parser( 'CREATE TABLE `payment` (' . '-- snippet' . "\n" . '`customer_id` smallint(5) unsigned NOT NULL,' . - 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . - ') ENGINE=InnoDB"' + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) ' . + 'REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . + ') ENGINE=InnoDB"', ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); + $this->assertIsArray($parser->statements[0]->fields); $this->assertEquals( - 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE', - CreateDefinition::build($parser->statements[0]->fields[1]) + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) ' . + 'REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE', + $parser->statements[0]->fields[1]->build(), ); } - public function testBuild2() + public function testBuild2(): void { $parser = new Parser( 'CREATE TABLE `payment` (' . '-- snippet' . "\n" . '`customer_id` smallint(5) unsigned NOT NULL,' . - '`customer_data` longtext CHARACTER SET utf8mb4 CHARSET utf8mb4_bin NOT NULL CHECK (json_valid(customer_data)),' . - 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . - ') ENGINE=InnoDB"' + '`customer_data` longtext CHARACTER SET utf8mb4 CHARSET utf8mb4_bin NOT NULL ' . + 'CHECK (json_valid(customer_data)),CONSTRAINT `fk_payment_customer` FOREIGN KEY ' . + '(`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . + ') ENGINE=InnoDB"', + ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); + $this->assertIsArray($parser->statements[0]->fields); + $this->assertEquals( + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) ' . + 'REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE', + $parser->statements[0]->fields[2]->build(), + ); + } + + public function testBuild3(): void + { + $parser = new Parser( + 'DROP TABLE IF EXISTS `searches`;' + . 'CREATE TABLE `searches` (' + . ' `id` int(10) unsigned NOT NULL AUTO_INCREMENT,' + . ' `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,' + . ' `public_name` varchar(120) COLLATE utf8_unicode_ci NOT NULL,' + . ' `group_id` smallint(5) unsigned NOT NULL DEFAULT \'0\',' + . ' `shortdesc` tinytext COLLATE utf8_unicode_ci,' + . ' `show_separators` tinyint(1) NOT NULL DEFAULT \'0\',' + . ' `show_separators_two` tinyint(1) NOT NULL DEFAULT FALSE,' + . ' `deleted` tinyint(1) NOT NULL DEFAULT \'0\',' + . ' PRIMARY KEY (`id`)' + . ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;' + . '' + . 'ALTER TABLE `searches` ADD `admins_only` BOOLEAN NOT NULL DEFAULT FALSE AFTER `show_separators`;', + ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[1]); + $this->assertIsArray($parser->statements[1]->fields); + $this->assertEquals( + '`public_name` varchar(120) COLLATE utf8_unicode_ci NOT NULL', + $parser->statements[1]->fields[2]->build(), + ); + $this->assertEquals( + '`show_separators` tinyint(1) NOT NULL DEFAULT \'0\'', + $parser->statements[1]->fields[5]->build(), ); $this->assertEquals( - 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE', - CreateDefinition::build($parser->statements[0]->fields[2]) + '`show_separators_two` tinyint(1) NOT NULL DEFAULT FALSE', + $parser->statements[1]->fields[6]->build(), ); } + + public function testBuildWithInvisibleKeyword(): void + { + $parser = new Parser( + 'CREATE TABLE `payment` (' . + '-- snippet' . "\n" . + '`customer_id` smallint(5) unsigned NOT NULL INVISIBLE,' . + '`customer_data` longtext CHARACTER SET utf8mb4 CHARSET utf8mb4_bin NOT NULL ' . + 'CHECK (json_valid(customer_data)),CONSTRAINT `fk_payment_customer` FOREIGN KEY ' . + '(`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . + ') ENGINE=InnoDB"', + ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); + $this->assertIsArray($parser->statements[0]->fields); + $this->assertEquals( + '`customer_id` smallint(5) UNSIGNED NOT NULL INVISIBLE', + $parser->statements[0]->fields[0]->build(), + ); + } + + public function testBuildWithCompressed(): void + { + $query = 'CREATE TABLE `user` ( `message2` TEXT COMPRESSED )'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals("CREATE TABLE `user` (\n `message2` text COMPRESSED\n) ", $stmt->build()); + } } diff --git a/tests/Components/ExpressionArrayTest.php b/tests/Components/ExpressionArrayTest.php index 597d0a34d..6d71e62dc 100644 --- a/tests/Components/ExpressionArrayTest.php +++ b/tests/Components/ExpressionArrayTest.php @@ -1,36 +1,54 @@ getTokensList('(expr)'), - [ - 'breakOnParentheses' => true, - ] + ['breakOnParentheses' => true], ); $this->assertEquals([], $component); } - public function testParse2() + public function testParse2(): void { $component = ExpressionArray::parse( new Parser(), $this->getTokensList('(expr) +'), - [ - 'parenthesesDelimited' => true, - ] + ['parenthesesDelimited' => true], + ); + $this->assertCount(1, $component); + $this->assertEquals('(expr)', $component[0]->expr); + } + + public function testParseWithCommentsNoOptions(): void + { + $component = ExpressionArray::parse( + new Parser(), + $this->getTokensList('(expr) -- comment ?'), ); $this->assertCount(1, $component); $this->assertEquals('(expr)', $component[0]->expr); } + + public function testParseWithCommentsAndOptions(): void + { + $component = ExpressionArray::parse( + new Parser(), + $this->getTokensList('(expr -- comment ?)'), + ['parenthesesDelimited' => true], + ); + $this->assertCount(1, $component); + $this->assertEquals('(expr', $component[0]->expr); + } } diff --git a/tests/Components/ExpressionTest.php b/tests/Components/ExpressionTest.php index 914ca3191..91852b8f9 100644 --- a/tests/Components/ExpressionTest.php +++ b/tests/Components/ExpressionTest.php @@ -1,48 +1,70 @@ getTokensList('IF(film_id > 0, film_id, film_id)')); - $this->assertEquals($component->expr, 'IF(film_id > 0, film_id, film_id)'); + $component = Expressions::parse(new Parser(), $this->getTokensList('IF(film_id > 0, film_id, film_id)')); + $this->assertNotNull($component); + $this->assertEquals('IF(film_id > 0, film_id, film_id)', $component->expr); } - public function testParse2() + public function testParse2(): void { - $component = Expression::parse(new Parser(), $this->getTokensList('col`test`')); - $this->assertEquals($component->expr, 'col'); + $component = Expressions::parse(new Parser(), $this->getTokensList('col`test`')); + $this->assertNotNull($component); + $this->assertEquals('col', $component->expr); + } + + public function testParse3(): void + { + $component = Expressions::parse(new Parser(), $this->getTokensList('col xx')); + $this->assertNotNull($component); + $this->assertEquals('xx', $component->alias); + + $component = Expressions::parse(new Parser(), $this->getTokensList('col y')); + $this->assertNotNull($component); + $this->assertEquals('y', $component->alias); + + $component = Expressions::parse(new Parser(), $this->getTokensList('avg.col FROM (SELECT ev.col FROM ev)')); + $this->assertNotNull($component); + $this->assertEquals('avg', $component->table); + $this->assertEquals('avg.col', $component->expr); + + $component = Expressions::parse(new Parser(), $this->getTokensList('x.id FROM (SELECT a.id FROM a) x')); + $this->assertNotNull($component); + $this->assertEquals('x', $component->table); + $this->assertEquals('x.id', $component->expr); } - /** - * @dataProvider parseErrProvider - * - * @param mixed $expr - * @param mixed $error - */ - public function testParseErr($expr, $error) + #[DataProvider('parseErrProvider')] + public function testParseErr(string $expr, string $error): void { $parser = new Parser(); - Expression::parse($parser, $this->getTokensList($expr)); + Expressions::parse($parser, $this->getTokensList($expr)); $errors = $this->getErrorsAsArray($parser); - $this->assertEquals($errors[0][0], $error); + $this->assertEquals($error, $errors[0][0]); } - public function parseErrProvider() + /** @return string[][] */ + public static function parseErrProvider(): array { return [ /* - array( + [ '(1))', 'Unexpected closing bracket.', - ), + ], */ [ 'tbl..col', @@ -63,15 +85,70 @@ public function parseErrProvider() ]; } - public function testBuild() + public function testBuildAll(): void { $component = [ new Expression('1 + 2', 'three'), new Expression('1 + 3', 'four'), ]; $this->assertEquals( - Expression::build($component), - '1 + 2 AS `three`, 1 + 3 AS `four`' + '1 + 2 AS `three`, 1 + 3 AS `four`', + Expressions::buildAll($component), ); } + + /** @return string[][] */ + public static function mysqlCommandsProvider(): array + { + return [ + [ + '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;', + 'SET @OLD_CHARACTER_SET_CLIENT = @@CHARACTER_SET_CLIENT', + ], + [ + '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;', + 'SET @OLD_CHARACTER_SET_RESULTS = @@CHARACTER_SET_RESULTS', + ], + [ + '/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;', + 'SET @OLD_COLLATION_CONNECTION = @@COLLATION_CONNECTION', + ], + [ + '/*!40101 SET NAMES utf8 */;', + 'SET NAMES utf8', + ], + [ + '/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;', + 'SET @OLD_TIME_ZONE = @@TIME_ZONE', + ], + [ + "/*!40103 SET TIME_ZONE='+00:00' */;", + "SET TIME_ZONE = '+00:00'", + ], + [ + '/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;', + 'SET @OLD_UNIQUE_CHECKS = @@UNIQUE_CHECKS, UNIQUE_CHECKS = 0', + ], + [ + '/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;', + 'SET @OLD_FOREIGN_KEY_CHECKS = @@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0', + ], + [ + "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;", + "SET @OLD_SQL_MODE = @@SQL_MODE, SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO'", + ], + [ + '/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;', + 'SET @OLD_SQL_NOTES = @@SQL_NOTES, SQL_NOTES = 0', + ], + ]; + } + + #[DataProvider('mysqlCommandsProvider')] + public function testMysqlCommands(string $expr, string $expected): void + { + $parser = new Parser($expr, true); + $parser->parse(); + self::assertSame($expected, $parser->statements[0]->build()); + } } diff --git a/tests/Components/FunctionCallTest.php b/tests/Components/FunctionCallTest.php index 386b220af..cc1966250 100644 --- a/tests/Components/FunctionCallTest.php +++ b/tests/Components/FunctionCallTest.php @@ -1,4 +1,5 @@ assertEquals('func(a, b)', FunctionCall::build($component)); + $this->assertEquals('func(a, b)', $component->build()); } - public function testBuildArrayObj() + public function testBuildArrayObj(): void { $component = new FunctionCall('func', new ArrayObj(['a', 'b'])); - $this->assertEquals('func(a, b)', FunctionCall::build($component)); + $this->assertEquals('func(a, b)', $component->build()); } } diff --git a/tests/Components/GroupKeywordTest.php b/tests/Components/GroupKeywordTest.php index 41ff89a43..c072a7bc0 100644 --- a/tests/Components/GroupKeywordTest.php +++ b/tests/Components/GroupKeywordTest.php @@ -1,25 +1,76 @@ , string}> */ + public static function provideExpressions(): Generator + { + yield 'With no expression at all' => [[], '']; + + yield 'With single simple expression' => [ + self::makeComponentFrom('a'), + 'a', + ]; + + yield 'With multiple simple expressions' => [ + self::makeComponentsFrom('a', 'b', 'c'), + 'a, b, c', + ]; + + yield 'With single untrimmed expression' => [ + self::makeComponentFrom(' o '), + 'o', + ]; + + yield 'With single untrimmed expression having several kinds of whitespaces' => [ + self::makeComponentFrom(" \n\r foo \t\v\x00 "), + 'foo', + ]; + + yield 'With multiple untrimmed expressions' => [ + self::makeComponentsFrom(' x', ' y ', 'z '), + 'x, y, z', + ]; + + yield 'With multiple untrimmed expression having several kinds of whitespaces' => [ + self::makeComponentsFrom(" \n\r\t\v\x00foo", " \n\r\tbar\v\x00", "baz \n\r\t\v\x00"), + 'foo, bar, baz', + ]; + } + + /** @param GroupKeyword|array $component */ + #[DataProvider('provideExpressions')] + public function testBuild(GroupKeyword|array $component, string $expected): void + { + if (is_array($component)) { + $this->assertSame($expected, GroupKeywords::buildAll($component)); + } else { + $this->assertSame($expected, $component->build()); + } + } + + private static function makeComponentFrom(string $string): GroupKeyword + { + return new GroupKeyword(new Expression($string)); + } + + /** @return array */ + private static function makeComponentsFrom(string ...$string): array { - $this->assertEquals( - GroupKeyword::build( - [ - new GroupKeyword(new Expression('a')), - new GroupKeyword(new Expression('b')), - new GroupKeyword(new Expression('c')), - ] - ), - 'a, b, c' - ); + return array_map(self::makeComponentFrom(...), $string); } } diff --git a/tests/Components/IntoKeywordTest.php b/tests/Components/IntoKeywordTest.php index 896c363a9..d11f6687d 100644 --- a/tests/Components/IntoKeywordTest.php +++ b/tests/Components/IntoKeywordTest.php @@ -1,42 +1,43 @@ getTokensList('OUTFILE "/tmp/outfile.txt"')); - $this->assertEquals($component->type, 'OUTFILE'); - $this->assertEquals($component->dest, '/tmp/outfile.txt'); + $component = IntoKeywords::parse(new Parser(), $this->getTokensList('OUTFILE "/tmp/outfile.txt"')); + $this->assertEquals('OUTFILE', $component->type); + $this->assertEquals('/tmp/outfile.txt', $component->dest); } - public function testBuild() + public function testBuild(): void { - $component = IntoKeyword::parse(new Parser(), $this->getTokensList('tbl(`col1`, `col2`)')); - $this->assertEquals('tbl(`col1`, `col2`)', IntoKeyword::build($component)); + $component = IntoKeywords::parse(new Parser(), $this->getTokensList('tbl(`col1`, `col2`)')); + $this->assertEquals('tbl(`col1`, `col2`)', $component->build()); } - public function testBuildValues() + public function testBuildValues(): void { - $component = IntoKeyword::parse(new Parser(), $this->getTokensList('@a1, @a2, @a3')); - $this->assertEquals('@a1, @a2, @a3', IntoKeyword::build($component)); + $component = IntoKeywords::parse(new Parser(), $this->getTokensList('@a1, @a2, @a3')); + $this->assertEquals('@a1, @a2, @a3', $component->build()); } - public function testBuildOutfile() + public function testBuildOutfile(): void { - $component = IntoKeyword::parse(new Parser(), $this->getTokensList('OUTFILE "/tmp/outfile.txt"')); - $this->assertEquals('OUTFILE "/tmp/outfile.txt"', IntoKeyword::build($component)); + $component = IntoKeywords::parse(new Parser(), $this->getTokensList('OUTFILE "/tmp/outfile.txt"')); + $this->assertEquals('OUTFILE "/tmp/outfile.txt"', $component->build()); } - public function testParseErr1() + public function testParseErr1(): void { - $component = IntoKeyword::parse(new Parser(), $this->getTokensList('OUTFILE;')); - $this->assertEquals($component->type, 'OUTFILE'); + $component = IntoKeywords::parse(new Parser(), $this->getTokensList('OUTFILE;')); + $this->assertEquals('OUTFILE', $component->type); } } diff --git a/tests/Components/JoinKeywordTest.php b/tests/Components/JoinKeywordTest.php index 91fd4a6ba..07e3c459b 100644 --- a/tests/Components/JoinKeywordTest.php +++ b/tests/Components/JoinKeywordTest.php @@ -1,45 +1,49 @@ getTokensList('JOIN a')); + $component = JoinKeywords::parse(new Parser(), $this->getTokensList('JOIN a')); $this->assertCount(1, $component); + $this->assertNotNull($component[0]->expr); $this->assertEquals('a', $component[0]->expr->expr); $this->assertNull($component[0]->on); $this->assertNull($component[0]->using); } - public function testParseIncompleteUsing() + public function testParseIncompleteUsing(): void { - $component = JoinKeyword::parse(new Parser(), $this->getTokensList('JOIN table2 USING (id)')); + $component = JoinKeywords::parse(new Parser(), $this->getTokensList('JOIN table2 USING (id)')); $this->assertCount(1, $component); + $this->assertNotNull($component[0]->expr); $this->assertEquals('table2', $component[0]->expr->expr); $this->assertNull($component[0]->on); + $this->assertNotNull($component[0]->using); $this->assertEquals(['id'], $component[0]->using->values); } - public function testBuild() + public function testBuildAll(): void { - $component = JoinKeyword::parse( + $component = JoinKeywords::parse( new Parser(), $this->getTokensList( 'LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ' . - 'ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)' - ) + 'ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)', + ), ); $this->assertEquals( 'LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ' . 'ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)', - JoinKeyword::build($component) + JoinKeywords::buildAll($component), ); } } diff --git a/tests/Components/KeyTest.php b/tests/Components/KeyTest.php index aeb403d06..986e5eff8 100644 --- a/tests/Components/KeyTest.php +++ b/tests/Components/KeyTest.php @@ -1,20 +1,375 @@ getTokensList('') + $this->getTokensList(''), ); + $this->assertNull($component->type); + $this->assertNull($component->options); $this->assertNull($component->name); + $this->assertNull($component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + '()', + $component->build(), + ); + } + + public function testParseKeyWithoutOptions(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`),'), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`)', + $component->build(), + ); + } + + public function testParseKeyWithLengthWithoutOptions(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`(10)),'), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10]], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`(10))', + $component->build(), + ); + } + + public function testParseKeyWithLengthWithoutOptionsWithOrder(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`(10) ASC),'), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10, 'order' => 'ASC']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`(10) ASC)', + $component->build(), + ); + } + + public function testParseKeyWithoutOptionsWithOrderLowercase(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type` desc),'), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'order' => 'DESC']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type` DESC)', + $component->build(), + ); + } + + public function testParseKeyWithoutOptionsWithOrder(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type` DESC),'), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'order' => 'DESC']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type` DESC)', + $component->build(), + ); + } + + public function testParseKeyWithLengthWithOptions(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`(10)) COMMENT \'my comment\','), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ], + ), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10]], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`(10)) COMMENT \'my comment\'', + $component->build(), + ); + } + + public function testParseKeyWithLengthWithAllOptions(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList( + // This is not a vary plausible example but it runs + // Only ENGINE_ATTRIBUTE gives a not supported error but is still a valid syntax + 'KEY `alias_type_idx` (`alias_type`(10))' + . ' COMMENT \'my comment\' VISIBLE KEY_BLOCK_SIZE=1' + . ' INVISIBLE ENGINE_ATTRIBUTE \'foo\' SECONDARY_ENGINE_ATTRIBUTE=\'bar\' USING BTREE,', + ), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray( + [ + 1 => [ + 'name' => 'KEY_BLOCK_SIZE', + 'equals' => true, + 'expr' => '1', + 'value' => '1', + ], + 2 => [ + 'name' => 'USING', + 'equals' => false, + 'expr' => 'BTREE', + 'value' => 'BTREE', + ], + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + 5 => [ + 'name' => 'ENGINE_ATTRIBUTE', + 'equals' => true, + 'expr' => '\'foo\'', + 'value' => 'foo', + ], + 6 => 'VISIBLE', + 12 => 'INVISIBLE', + 13 => [ + 'name' => 'SECONDARY_ENGINE_ATTRIBUTE', + 'equals' => true, + 'expr' => '\'bar\'', + 'value' => 'bar', + ], + ], + ), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10]], $component->columns); + } + + public function testParseKeyExpressionWithoutOptions(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))),', + ), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $expr = new Expression('(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))'); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))) ', + $component->build(), + ); + } + + public function testParseKeyExpressionWithOptions(): void + { + $component = Keys::parse( + new Parser(), + $this->getTokensList( + 'KEY `updated_tz_ind2`' + . ' ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')))' + . ' COMMENT \'my comment\',', + ), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ], + ), $component->options); + $expr = new Expression('(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))'); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2`' + . ' ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')))' + . ' COMMENT \'my comment\'', + $component->build(), + ); + } + + public function testParseKeyExpressionWithOptionsError(): void + { + $parser = new Parser(); + $component = Keys::parse( + $parser, + $this->getTokensList( + 'KEY `updated_tz_ind2` (()convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')))' + . ' COMMENT \'my comment\',', + ), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [], + ), $component->options); + $t = new Token('convert_tz', TokenType::Keyword, 33); + $t->position = 25; + + $this->assertEquals([ + new ParserException( + 'Unexpected token.', + $t, + ), + ], $parser->errors); + $expr = new Expression('(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))'); + $expr->function = 'convert_tz'; + $this->assertEquals('()(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')', $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2` (()(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')) ', + $component->build(), + ); + } + + public function testParseKeyOneExpressionWithOptions(): void + { + $parser = new Parser(); + $component = Keys::parse( + $parser, + $this->getTokensList( + 'KEY `updated_tz_ind2`' + . ' (' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')), ' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\'))' + . ')' + . ' COMMENT \'my comment\',', + ), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ], + ), $component->options); + $this->assertSame([], $parser->errors); + $expr = new Expression( + '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\'))', + ); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\'))' + . ') COMMENT \'my comment\'', + $component->build(), + ); + } + + public function testParseKeyMultipleExpressionsWithOptions(): void + { + $parser = new Parser(); + $component = Keys::parse( + $parser, + $this->getTokensList( + 'KEY `updated_tz_ind2`' + . ' (' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')), ' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\')), ' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'RU\'))' + . ')' + . ' COMMENT \'my comment\',', + ), + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ], + ), $component->options); + $expr = new Expression( + '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'RU\'))', + ); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame([], $parser->errors); + $this->assertSame( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'RU\'))' + . ') COMMENT \'my comment\'', + $component->build(), + ); } } diff --git a/tests/Components/LimitTest.php b/tests/Components/LimitTest.php index b1b7943c6..43a9a26eb 100644 --- a/tests/Components/LimitTest.php +++ b/tests/Components/LimitTest.php @@ -1,36 +1,35 @@ assertEquals(Limit::build($component), '0, 1'); + $this->assertEquals('0, 1', $component->build()); } - public function testBuildWithOffset() + public function testBuildWithOffset(): void { $component = new Limit(1, 2); - $this->assertEquals(Limit::build($component), '2, 1'); + $this->assertEquals('2, 1', $component->build()); } - /** - * @dataProvider parseProvider - * - * @param mixed $test - */ - public function testParse($test) + #[DataProvider('parseProvider')] + public function testParse(string $test): void { $this->runParserTest($test); } - public function parseProvider() + /** @return string[][] */ + public static function parseProvider(): array { return [ ['parser/parseLimitErr1'], diff --git a/tests/Components/LockExpressionTest.php b/tests/Components/LockExpressionTest.php index 003c887e5..1b96ce1d8 100644 --- a/tests/Components/LockExpressionTest.php +++ b/tests/Components/LockExpressionTest.php @@ -1,46 +1,45 @@ getTokensList('table1 AS t1 READ LOCAL')); + $component = LockExpressions::parse(new Parser(), $this->getTokensList('table1 AS t1 READ LOCAL')); $this->assertNotNull($component->table); - $this->assertEquals($component->table->table, 'table1'); - $this->assertEquals($component->table->alias, 't1'); - $this->assertEquals($component->type, 'READ LOCAL'); + $this->assertEquals('table1', $component->table->table); + $this->assertEquals('t1', $component->table->alias); + $this->assertEquals('READ LOCAL', $component->type); } - public function testParse2() + public function testParse2(): void { - $component = LockExpression::parse(new Parser(), $this->getTokensList('table1 LOW_PRIORITY WRITE')); + $component = LockExpressions::parse(new Parser(), $this->getTokensList('table1 LOW_PRIORITY WRITE')); $this->assertNotNull($component->table); - $this->assertEquals($component->table->table, 'table1'); - $this->assertEquals($component->type, 'LOW_PRIORITY WRITE'); + $this->assertEquals('table1', $component->table->table); + $this->assertEquals('LOW_PRIORITY WRITE', $component->type); } - /** - * @dataProvider parseErrProvider - * - * @param mixed $expr - * @param mixed $error - */ - public function testParseErr($expr, $error) + #[DataProvider('parseErrProvider')] + public function testParseErr(string $expr, string $error): void { $parser = new Parser(); - LockExpression::parse($parser, $this->getTokensList($expr)); + LockExpressions::parse($parser, $this->getTokensList($expr)); $errors = $this->getErrorsAsArray($parser); - $this->assertEquals($errors[0][0], $error); + $this->assertEquals($error, $errors[0][0]); } - public function parseErrProvider() + /** @return string[][] */ + public static function parseErrProvider(): array { return [ [ @@ -58,15 +57,15 @@ public function parseErrProvider() ]; } - public function testBuild() + public function testBuildAll(): void { $component = [ - LockExpression::parse(new Parser(), $this->getTokensList('table1 AS t1 READ LOCAL')), - LockExpression::parse(new Parser(), $this->getTokensList('table2 LOW_PRIORITY WRITE')), + LockExpressions::parse(new Parser(), $this->getTokensList('table1 AS t1 READ LOCAL')), + LockExpressions::parse(new Parser(), $this->getTokensList('table2 LOW_PRIORITY WRITE')), ]; $this->assertEquals( - LockExpression::build($component), - 'table1 AS `t1` READ LOCAL, table2 LOW_PRIORITY WRITE' + 'table1 AS `t1` READ LOCAL, table2 LOW_PRIORITY WRITE', + LockExpression::buildAll($component), ); } } diff --git a/tests/Components/OptionsArrayTest.php b/tests/Components/OptionsArrayTest.php index 3904fdfed..c0b71d8f4 100644 --- a/tests/Components/OptionsArrayTest.php +++ b/tests/Components/OptionsArrayTest.php @@ -1,17 +1,20 @@ getTokensList('A B = /*comment*/ (test) C'), [ @@ -21,7 +24,7 @@ public function testParse() 'var', ], 'C' => 3, - ] + ], ); $this->assertEquals( [ @@ -34,13 +37,13 @@ public function testParse() ], 3 => 'C', ], - $component->options + $component->options, ); } - public function testParseExpr() + public function testParseExpr(): void { - $component = OptionsArray::parse( + $component = OptionsArrays::parse( new Parser(), $this->getTokensList('SUM = (3 + 5) RESULT = 8'), [ @@ -53,15 +56,17 @@ public function testParseExpr() 2, 'var', ], - ] + ], ); - $this->assertEquals('(3 + 5)', (string) $component->has('SUM', true)); - $this->assertEquals('8', $component->has('RESULT')); + $sumValue = $component->get('SUM', true); + $this->assertInstanceOf(Expression::class, $sumValue); + $this->assertEquals('(3 + 5)', (string) $sumValue); + $this->assertEquals('8', $component->get('RESULT')); } - public function testHas() + public function testHas(): void { - $component = OptionsArray::parse( + $component = OptionsArrays::parse( new Parser(), $this->getTokensList('A B = /*comment*/ (test) C'), [ @@ -71,24 +76,24 @@ public function testHas() 'var', ], 'C' => 3, - ] + ], ); $this->assertTrue($component->has('A')); - $this->assertEquals('test', $component->has('B')); + $this->assertEquals('test', $component->get('B')); $this->assertTrue($component->has('C')); $this->assertFalse($component->has('D')); } - public function testRemove() + public function testRemove(): void { /* Assertion 1 */ $component = new OptionsArray(['a', 'b', 'c']); $this->assertTrue($component->remove('b')); $this->assertFalse($component->remove('d')); - $this->assertEquals($component->options, [0 => 'a', 2 => 'c']); + $this->assertEquals([0 => 'a', 2 => 'c'], $component->options); /* Assertion 2 */ - $component = OptionsArray::parse( + $component = OptionsArrays::parse( new Parser(), $this->getTokensList('A B = /*comment*/ (test) C'), [ @@ -98,21 +103,21 @@ public function testRemove() 'var', ], 'C' => 3, - ] + ], ); - $this->assertEquals('test', $component->has('B')); + $this->assertEquals('test', $component->get('B')); $component->remove('B'); $this->assertFalse($component->has('B')); } - public function testMerge() + public function testMerge(): void { $component = new OptionsArray(['a']); - $component->merge(['b', 'c']); - $this->assertEquals($component->options, ['a', 'b', 'c']); + $component->merge(new OptionsArray(['b', 'c'])); + $this->assertEquals(['a', 'b', 'c'], $component->options); } - public function testBuild() + public function testBuild(): void { $component = new OptionsArray( [ @@ -122,12 +127,26 @@ public function testBuild() 'name' => 'MAX_STATEMENT_TIME', 'value' => '42', 'equals' => true, + 'expr' => '', ], - ] + ], + ); + $this->assertEquals( + 'ALL SQL_CALC_FOUND_ROWS MAX_STATEMENT_TIME=42', + $component->build(), + ); + } + + public function testBuildWithRecursive(): void + { + $component = OptionsArrays::parse( + new Parser(), + $this->getTokensList('RECURSIVE'), + ['RECURSIVE' => 1], ); $this->assertEquals( - OptionsArray::build($component), - 'ALL SQL_CALC_FOUND_ROWS MAX_STATEMENT_TIME=42' + 'RECURSIVE', + $component->build(), ); } } diff --git a/tests/Components/OrderKeywordTest.php b/tests/Components/OrderKeywordTest.php index 11468fb24..1150d86fa 100644 --- a/tests/Components/OrderKeywordTest.php +++ b/tests/Components/OrderKeywordTest.php @@ -1,24 +1,27 @@ assertEquals( - OrderKeyword::build( + 'a ASC, b DESC', + OrderKeywords::buildAll( [ - new OrderKeyword(new Expression('a'), 'ASC'), - new OrderKeyword(new Expression('b'), 'DESC'), - ] + new OrderKeyword(new Expression('a'), OrderSortKeyword::Asc), + new OrderKeyword(new Expression('b'), OrderSortKeyword::Desc), + ], ), - 'a ASC, b DESC' ); } } diff --git a/tests/Components/ParameterDefinitionTest.php b/tests/Components/ParameterDefinitionTest.php index 38d28e0b4..ea9db0c84 100644 --- a/tests/Components/ParameterDefinitionTest.php +++ b/tests/Components/ParameterDefinitionTest.php @@ -1,21 +1,32 @@ getTokensList('(a INT, b INT') + $this->getTokensList('(a INT, b INT'), ); $this->assertEquals('a', $component[0]->name); $this->assertEquals('b', $component[1]->name); } + + public function testParseComplex(): void + { + $parser = new Parser(); + $component = ParameterDefinitions::parse( + $parser, + $this->getTokensList('CREATE DEFINER=`root`@`%` PROCEDURE `foo`( $bar int )'), + ); + $this->assertEquals('$bar', $component[0]->name); + } } diff --git a/tests/Components/PartitionDefinitionTest.php b/tests/Components/PartitionDefinitionTest.php index 2d2607640..7de302a0a 100644 --- a/tests/Components/PartitionDefinitionTest.php +++ b/tests/Components/PartitionDefinitionTest.php @@ -1,35 +1,39 @@ getTokensList('PARTITION p0 VALUES LESS THAN(1990)') + $this->getTokensList('PARTITION p0 VALUES LESS THAN(1990)'), ); $this->assertFalse($component->isSubpartition); $this->assertEquals('p0', $component->name); $this->assertEquals('LESS THAN', $component->type); + $this->assertInstanceOf(Expression::class, $component->expr); $this->assertEquals('(1990)', $component->expr->expr); } - public function testParseNameWithUnderscore() + public function testParseNameWithUnderscore(): void { - $component = PartitionDefinition::parse( + $component = PartitionDefinitions::parse( new Parser(), - $this->getTokensList('PARTITION 2017_12 VALUES LESS THAN (\'2018-01-01 00:00:00\') ENGINE = MyISAM') + $this->getTokensList('PARTITION 2017_12 VALUES LESS THAN (\'2018-01-01 00:00:00\') ENGINE = MyISAM'), ); $this->assertFalse($component->isSubpartition); $this->assertEquals('2017_12', $component->name); $this->assertEquals('LESS THAN', $component->type); + $this->assertInstanceOf(Expression::class, $component->expr); $this->assertEquals('(\'2018-01-01 00:00:00\')', $component->expr->expr); } } diff --git a/tests/Components/ReferenceTest.php b/tests/Components/ReferenceTest.php index 19768c73e..6ccda5caa 100644 --- a/tests/Components/ReferenceTest.php +++ b/tests/Components/ReferenceTest.php @@ -1,4 +1,5 @@ getTokensList('tbl (id)')); + $component = References::parse(new Parser(), $this->getTokensList('tbl (id)')); + $this->assertNotNull($component->table); $this->assertEquals('tbl', $component->table->table); $this->assertEquals(['id'], $component->columns); } - public function testBuild() + public function testBuild(): void { $component = new Reference(new Expression('`tbl`'), ['id']); - $this->assertEquals('`tbl` (`id`)', Reference::build($component)); + $this->assertEquals('`tbl` (`id`)', $component->build()); } } diff --git a/tests/Components/RenameOperationTest.php b/tests/Components/RenameOperationTest.php index 6f3860575..35811c043 100644 --- a/tests/Components/RenameOperationTest.php +++ b/tests/Components/RenameOperationTest.php @@ -1,17 +1,18 @@ getTokensList('a TO b, c TO d')); - $this->assertEquals(RenameOperation::build($component), 'a TO b, c TO d'); + $component = RenameOperations::parse(new Parser(), $this->getTokensList('a TO b, c TO d')); + $this->assertEquals('a TO b, c TO d', RenameOperations::buildAll($component)); } } diff --git a/tests/Lexer/ContextTest.php b/tests/Lexer/ContextTest.php index 83207c3f6..2a6ec62de 100644 --- a/tests/Lexer/ContextTest.php +++ b/tests/Lexer/ContextTest.php @@ -1,45 +1,57 @@ assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700', Context::$loadedContext); - $this->assertArrayHasKey('STORED', Context::$KEYWORDS); - $this->assertArrayNotHasKey('AUTHORS', Context::$KEYWORDS); + $this->assertEquals('PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700', Context::$loadedContext); + $this->assertArrayHasKey('STORED', Context::$keywords); + $this->assertArrayNotHasKey('AUTHORS', Context::$keywords); // Restoring context. - Context::load(''); - $this->assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700', Context::$defaultContext); - $this->assertArrayHasKey('STORED', Context::$KEYWORDS); - $this->assertArrayNotHasKey('AUTHORS', Context::$KEYWORDS); + Context::load(); + $this->assertArrayHasKey('STORED', Context::$keywords); + $this->assertArrayNotHasKey('AUTHORS', Context::$keywords); } /** * Test for loading closest SQL context - * - * @dataProvider contextLoading */ - public function testLoadClosest($context, $expected) + #[DataProvider('contextLoadingProvider')] + public function testLoadClosest(string $context, string|null $expected): void { $this->assertEquals($expected, Context::loadClosest($context)); - if (! is_null($expected)) { - $this->assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\Context' . $expected, Context::$loadedContext); + if ($expected !== null) { + $this->assertEquals('PhpMyAdmin\\SqlParser\\Contexts\\Context' . $expected, Context::$loadedContext); $this->assertTrue(class_exists(Context::$loadedContext)); } // Restoring context. - Context::load(''); + Context::load(); } - public function contextLoading() + /** + * @return array> + * @psalm-return array + */ + public static function contextLoadingProvider(): array { return [ 'MySQL match' => [ @@ -51,7 +63,7 @@ public function contextLoading() 'MySql50700', ], 'MySQL fallback' => [ - 'MySql99999', + 'MySql9897969594', 'MySql50700', ], 'MariaDB match' => [ @@ -73,21 +85,18 @@ public function contextLoading() ]; } - /** - * @dataProvider contextNames - * - * @param mixed $context - */ - public function testLoadAll($context) + #[DataProvider('contextNamesProvider')] + public function testLoadAll(string $context): void { Context::load($context); - $this->assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\Context' . $context, Context::$loadedContext); + $this->assertEquals('PhpMyAdmin\\SqlParser\\Contexts\\Context' . $context, Context::$loadedContext); // Restoring context. - Context::load(''); + Context::load(); } - public function contextNames() + /** @return string[][] */ + public static function contextNamesProvider(): array { return [ ['MySql50000'], @@ -96,53 +105,201 @@ public function contextNames() ['MySql50600'], ['MySql50700'], ['MySql80000'], + ['MySql80100'], + ['MySql80200'], + ['MySql80300'], + ['MySql80400'], + ['MySql90000'], + ['MySql90100'], ['MariaDb100000'], ['MariaDb100100'], ['MariaDb100200'], ['MariaDb100300'], + ['MariaDb100400'], + ['MariaDb100500'], + ['MariaDb100600'], + ['MariaDb100700'], + ['MariaDb100800'], + ['MariaDb100900'], + ['MariaDb101000'], + ['MariaDb101100'], + ['MariaDb110000'], + ['MariaDb110100'], + ['MariaDb110200'], + ['MariaDb110300'], + ['MariaDb110400'], + ['MariaDb110500'], + ['MariaDb110600'], + ['MariaDb110700'], + ]; + } + + #[DataProvider('contextClassesProvider')] + public function testLoadAllByClass(string $context): void + { + Context::load($context); + $this->assertEquals($context, Context::$loadedContext); + + // Restoring context. + Context::load(''); + } + + /** @return string[][] */ + public static function contextClassesProvider(): array + { + return [ + [Contexts\ContextMySql50000::class], + [Contexts\ContextMySql50100::class], + [Contexts\ContextMySql50500::class], + [Contexts\ContextMySql50600::class], + [Contexts\ContextMySql50700::class], + [Contexts\ContextMySql80000::class], + [Contexts\ContextMySql80100::class], + [Contexts\ContextMySql80200::class], + [Contexts\ContextMySql80300::class], + [Contexts\ContextMySql80400::class], + [Contexts\ContextMySql90000::class], + [Contexts\ContextMySql90100::class], + [Contexts\ContextMariaDb100000::class], + [Contexts\ContextMariaDb100100::class], + [Contexts\ContextMariaDb100200::class], + [Contexts\ContextMariaDb100300::class], + [Contexts\ContextMariaDb100400::class], + [Contexts\ContextMariaDb100500::class], + [Contexts\ContextMariaDb100600::class], + [Contexts\ContextMariaDb100700::class], + [Contexts\ContextMariaDb100800::class], + [Contexts\ContextMariaDb100900::class], + [Contexts\ContextMariaDb101000::class], + [Contexts\ContextMariaDb101100::class], + [Contexts\ContextMariaDb110000::class], + [Contexts\ContextMariaDb110100::class], + [Contexts\ContextMariaDb110200::class], + [Contexts\ContextMariaDb110300::class], + [Contexts\ContextMariaDb110400::class], + [Contexts\ContextMariaDb110500::class], + [Contexts\ContextMariaDb110600::class], + [Contexts\ContextMariaDb110700::class], ]; } - public function testLoadError() + public function testLoadError(): void { - $this->expectExceptionMessage('Specified context ("\PhpMyAdmin\SqlParser\Contexts\ContextFoo") does not exist.'); - $this->expectException(\Exception::class); - Context::load('Foo'); + $this->assertFalse(Context::load('Foo')); } - public function testMode() + #[DataProvider('providerForTestMode')] + public function testMode(int|string $mode, int $expected): void { - Context::setMode('REAL_AS_FLOAT,ANSI_QUOTES,IGNORE_SPACE'); - $this->assertEquals( + Context::setMode($mode); + $this->assertSame($expected, Context::getMode()); + } + + /** + * @return array> + * @psalm-return list + */ + public static function providerForTestMode(): array + { + return [ + [0, Context::SQL_MODE_NONE], + [1, 1], + ['', Context::SQL_MODE_NONE], + ['invalid', Context::SQL_MODE_NONE], + ['ALLOW_INVALID_DATES', Context::SQL_MODE_ALLOW_INVALID_DATES], + ['ANSI_QUOTES', Context::SQL_MODE_ANSI_QUOTES], + ['COMPAT_MYSQL', Context::SQL_MODE_COMPAT_MYSQL], + ['ERROR_FOR_DIVISION_BY_ZERO', Context::SQL_MODE_ERROR_FOR_DIVISION_BY_ZERO], + ['HIGH_NOT_PRECEDENCE', Context::SQL_MODE_HIGH_NOT_PRECEDENCE], + ['IGNORE_SPACE', Context::SQL_MODE_IGNORE_SPACE], + ['NO_AUTO_CREATE_USER', Context::SQL_MODE_NO_AUTO_CREATE_USER], + ['NO_AUTO_VALUE_ON_ZERO', Context::SQL_MODE_NO_AUTO_VALUE_ON_ZERO], + ['NO_BACKSLASH_ESCAPES', Context::SQL_MODE_NO_BACKSLASH_ESCAPES], + ['NO_DIR_IN_CREATE', Context::SQL_MODE_NO_DIR_IN_CREATE], + ['NO_ENGINE_SUBSTITUTION', Context::SQL_MODE_NO_ENGINE_SUBSTITUTION], + ['NO_FIELD_OPTIONS', Context::SQL_MODE_NO_FIELD_OPTIONS], + ['NO_KEY_OPTIONS', Context::SQL_MODE_NO_KEY_OPTIONS], + ['NO_TABLE_OPTIONS', Context::SQL_MODE_NO_TABLE_OPTIONS], + ['NO_UNSIGNED_SUBTRACTION', Context::SQL_MODE_NO_UNSIGNED_SUBTRACTION], + ['NO_ZERO_DATE', Context::SQL_MODE_NO_ZERO_DATE], + ['NO_ZERO_IN_DATE', Context::SQL_MODE_NO_ZERO_IN_DATE], + ['ONLY_FULL_GROUP_BY', Context::SQL_MODE_ONLY_FULL_GROUP_BY], + ['PIPES_AS_CONCAT', Context::SQL_MODE_PIPES_AS_CONCAT], + ['REAL_AS_FLOAT', Context::SQL_MODE_REAL_AS_FLOAT], + ['STRICT_ALL_TABLES', Context::SQL_MODE_STRICT_ALL_TABLES], + ['STRICT_TRANS_TABLES', Context::SQL_MODE_STRICT_TRANS_TABLES], + ['NO_ENCLOSING_QUOTES', Context::SQL_MODE_NO_ENCLOSING_QUOTES], + ['ANSI', Context::SQL_MODE_ANSI], + ['DB2', Context::SQL_MODE_DB2], + ['MAXDB', Context::SQL_MODE_MAXDB], + ['MSSQL', Context::SQL_MODE_MSSQL], + ['ORACLE', Context::SQL_MODE_ORACLE], + ['POSTGRESQL', Context::SQL_MODE_POSTGRESQL], + ['TRADITIONAL', Context::SQL_MODE_TRADITIONAL], + ]; + } + + public function testModeWithCombinedModes(): void + { + Context::setMode( Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_ANSI_QUOTES | Context::SQL_MODE_IGNORE_SPACE, - Context::$MODE ); - Context::setMode('TRADITIONAL'); - $this->assertEquals( - Context::SQL_MODE_TRADITIONAL, - Context::$MODE + $this->assertSame( + Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_ANSI_QUOTES | Context::SQL_MODE_IGNORE_SPACE, + Context::getMode(), ); + $this->assertTrue(Context::hasMode(Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_IGNORE_SPACE)); + $this->assertTrue(Context::hasMode(Context::SQL_MODE_ANSI_QUOTES)); + $this->assertFalse(Context::hasMode(Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_ALLOW_INVALID_DATES)); + $this->assertFalse(Context::hasMode(Context::SQL_MODE_ALLOW_INVALID_DATES)); + + Context::setMode(Context::SQL_MODE_TRADITIONAL); + $this->assertSame(Context::SQL_MODE_TRADITIONAL, Context::getMode()); + Context::setMode(); - $this->assertEquals(0, Context::$MODE); + $this->assertSame(Context::SQL_MODE_NONE, Context::getMode()); } - public function testEscape() + public function testModeWithString(): void { - Context::setMode('NO_ENCLOSING_QUOTES'); + Context::setMode('REAL_AS_FLOAT,ANSI_QUOTES,IGNORE_SPACE'); + $this->assertSame( + Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_ANSI_QUOTES | Context::SQL_MODE_IGNORE_SPACE, + Context::getMode(), + ); + $this->assertTrue(Context::hasMode(Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_IGNORE_SPACE)); + $this->assertTrue(Context::hasMode(Context::SQL_MODE_ANSI_QUOTES)); + $this->assertFalse(Context::hasMode(Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_ALLOW_INVALID_DATES)); + $this->assertFalse(Context::hasMode(Context::SQL_MODE_ALLOW_INVALID_DATES)); + + Context::setMode('TRADITIONAL'); + $this->assertSame(Context::SQL_MODE_TRADITIONAL, Context::getMode()); + + Context::setMode(''); + $this->assertSame(Context::SQL_MODE_NONE, Context::getMode()); + } + + public function testEscape(): void + { + Context::setMode(Context::SQL_MODE_NO_ENCLOSING_QUOTES); $this->assertEquals('test', Context::escape('test')); + $this->assertEquals('`123`', Context::escape('123')); + $this->assertEquals('`$test`', Context::escape('$test')); + $this->assertEquals('`te st`', Context::escape('te st')); + $this->assertEquals('`te.st`', Context::escape('te.st')); - Context::setMode('ANSI_QUOTES'); + Context::setMode(Context::SQL_MODE_ANSI_QUOTES); $this->assertEquals('"test"', Context::escape('test')); Context::setMode(); $this->assertEquals('`test`', Context::escape('test')); - $this->assertEquals( - [ - '`a`', - '`b`', - ], - Context::escape(['a', 'b']) - ); + $this->assertEquals(['`a`', '`b`'], Context::escapeAll(['a', 'b'])); + } + + public function testEscapeAll(): void + { + Context::setMode(); + $this->assertEquals(['`a`', '`b`'], Context::escapeAll(['a', 'b'])); } } diff --git a/tests/Lexer/IsMethodsTest.php b/tests/Lexer/IsMethodsTest.php index 909590737..9feb77edf 100644 --- a/tests/Lexer/IsMethodsTest.php +++ b/tests/Lexer/IsMethodsTest.php @@ -1,4 +1,5 @@ assertEquals(1 | Token::FLAG_KEYWORD_RESERVED, Context::isKeyword('SELECT')); $this->assertEquals(1 | Token::FLAG_KEYWORD_RESERVED, Context::isKeyword('ALL')); @@ -17,11 +18,11 @@ public function testIsKeyword() $this->assertEquals( 1 | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, - Context::isKeyword('PRIMARY KEY') + Context::isKeyword('PRIMARY KEY'), ); $this->assertEquals( 1 | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, - Context::isKeyword('CHARACTER SET') + Context::isKeyword('CHARACTER SET'), ); $this->assertEquals(1 | Token::FLAG_KEYWORD_RESERVED, Context::isKeyword('FROM', true)); @@ -31,7 +32,7 @@ public function testIsKeyword() $this->assertNull(Context::isKeyword('bar baz')); } - public function testIsOperator() + public function testIsOperator(): void { $this->assertEquals(Token::FLAG_OPERATOR_ARITHMETIC, Context::isOperator('%')); $this->assertEquals(Token::FLAG_OPERATOR_LOGICAL, Context::isOperator('!')); @@ -44,7 +45,7 @@ public function testIsOperator() $this->assertNull(Context::isOperator('a')); } - public function testIsWhitespace() + public function testIsWhitespace(): void { $this->assertTrue(Context::isWhitespace(' ')); $this->assertTrue(Context::isWhitespace("\r")); @@ -56,7 +57,7 @@ public function testIsWhitespace() $this->assertFalse(Context::isWhitespace("\u1000")); } - public function testIsComment() + public function testIsComment(): void { $this->assertEquals(Token::FLAG_COMMENT_BASH, Context::isComment('#')); $this->assertEquals(Token::FLAG_COMMENT_C, Context::isComment('/*')); @@ -69,10 +70,11 @@ public function testIsComment() $this->assertEquals(Token::FLAG_COMMENT_C, Context::isComment('/*comment */')); $this->assertEquals(Token::FLAG_COMMENT_SQL, Context::isComment('-- my comment')); + $this->assertNull(Context::isComment('')); $this->assertNull(Context::isComment('--not a comment')); } - public function testIsBool() + public function testIsBool(): void { $this->assertTrue(Context::isBool('true')); $this->assertTrue(Context::isBool('false')); @@ -81,7 +83,7 @@ public function testIsBool() $this->assertFalse(Context::isBool('falsee')); } - public function testIsNumber() + public function testIsNumber(): void { $this->assertTrue(Context::isNumber('+')); $this->assertTrue(Context::isNumber('-')); @@ -100,29 +102,27 @@ public function testIsNumber() $this->assertTrue(Context::isNumber('E')); } - public function testIsString() + public function testIsString(): void { $this->assertEquals(Token::FLAG_STRING_SINGLE_QUOTES, Context::isString("'")); $this->assertEquals(Token::FLAG_STRING_DOUBLE_QUOTES, Context::isString('"')); - $this->assertEquals(Token::FLAG_STRING_SINGLE_QUOTES, Context::isString("'foo bar'")); - $this->assertEquals(Token::FLAG_STRING_DOUBLE_QUOTES, Context::isString('"foo bar"')); - - $this->assertEquals(Context::isString('foo bar'), null); + $this->assertNull(Context::isString('')); + $this->assertNull(Context::isString('f')); } - public function testIsSymbol() + public function testIsSymbol(): void { $this->assertEquals(Token::FLAG_SYMBOL_VARIABLE, Context::isSymbol('@')); $this->assertEquals(Token::FLAG_SYMBOL_BACKTICK, Context::isSymbol('`')); + $this->assertEquals(Token::FLAG_SYMBOL_PARAMETER, Context::isSymbol(':')); + $this->assertEquals(Token::FLAG_SYMBOL_PARAMETER, Context::isSymbol('?')); - $this->assertEquals(Token::FLAG_SYMBOL_VARIABLE, Context::isSymbol('@id')); - $this->assertEquals(Token::FLAG_SYMBOL_BACKTICK, Context::isSymbol('`id`')); - - $this->assertEquals(Context::isSymbol('id'), null); + $this->assertNull(Context::isSymbol('')); + $this->assertNull(Context::isSymbol('i')); } - public function testisSeparator() + public function testisSeparator(): void { $this->assertTrue(Context::isSeparator('+')); $this->assertTrue(Context::isSeparator('.')); diff --git a/tests/Lexer/LexerTest.php b/tests/Lexer/LexerTest.php index fb7a219a2..10d4d90dd 100644 --- a/tests/Lexer/LexerTest.php +++ b/tests/Lexer/LexerTest.php @@ -1,4 +1,5 @@ assertEquals( - $lexer->errors, [ new LexerException('error #1', 'foo', 1, 2), new LexerException('error #2', 'bar', 3, 4), - ] + ], + $lexer->errors, ); } - public function testErrorStrict() + public function testErrorStrict(): void { $this->expectExceptionCode(4); $this->expectExceptionMessage('strict error'); $this->expectException(LexerException::class); - $lexer = new Lexer(''); - $lexer->strict = true; + $lexer = new Lexer('', true); $lexer->error('strict error', 'foo', 1, 4); } - /** - * @dataProvider lexProvider - * - * @param mixed $test - */ - public function testLex($test) + #[DataProvider('lexProvider')] + public function testLex(string $test): void { $this->runParserTest($test); } - public function lexProvider() + /** @return string[][] */ + public static function lexProvider(): array { return [ ['lexer/lex'], @@ -73,17 +73,25 @@ public function lexProvider() ['lexer/lexKeyword2'], ['lexer/lexNumber'], ['lexer/lexOperator'], + ['lexer/lexOperatorStarIsArithmetic'], + ['lexer/lexOperatorStarIsWildcard'], + ['lexer/lexEmptyCStyleComment'], ['lexer/lexString'], ['lexer/lexStringErr1'], ['lexer/lexSymbol'], ['lexer/lexSymbolErr1'], ['lexer/lexSymbolErr2'], ['lexer/lexSymbolErr3'], - ['lexer/lexSymbolUser'], + ['lexer/lexSymbolUser1'], + ['lexer/lexSymbolUser2'], + ['lexer/lexSymbolUser3'], + ['lexer/lexSymbolUser4_mariadb_100400'], + ['lexer/lexSymbolUser5_mariadb_100400'], ['lexer/lexWhitespace'], ['lexer/lexLabel1'], ['lexer/lexLabel2'], ['lexer/lexNoLabel'], + ['lexer/lexWildcardThenComment'], ]; } } diff --git a/tests/Lexer/TokenTest.php b/tests/Lexer/TokenTest.php index ba61e3208..3e4170b04 100644 --- a/tests/Lexer/TokenTest.php +++ b/tests/Lexer/TokenTest.php @@ -1,91 +1,93 @@ assertEquals($tok->value, 'SELECT'); + $tok = new Token('SelecT', TokenType::Keyword, Token::FLAG_KEYWORD_RESERVED); + $this->assertEquals('SELECT', $tok->value); - $tok = new Token('aS', Token::TYPE_KEYWORD, Token::FLAG_KEYWORD_RESERVED); - $this->assertEquals($tok->value, 'AS'); + $tok = new Token('aS', TokenType::Keyword, Token::FLAG_KEYWORD_RESERVED); + $this->assertEquals('AS', $tok->value); } - public function testExtractWhitespace() + public function testExtractWhitespace(): void { - $tok = new Token(" \t \r \n ", Token::TYPE_WHITESPACE); - $this->assertEquals($tok->value, ' '); + $tok = new Token(" \t \r \n ", TokenType::Whitespace); + $this->assertEquals(' ', $tok->value); } - public function testExtractBool() + public function testExtractBool(): void { - $tok = new Token('false', Token::TYPE_BOOL); + $tok = new Token('false', TokenType::Bool); $this->assertFalse($tok->value); - $tok = new Token('True', Token::TYPE_BOOL); + $tok = new Token('True', TokenType::Bool); $this->assertTrue($tok->value); } - public function testExtractNumber() + public function testExtractNumber(): void { - $tok = new Token('--42', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE); - $this->assertEquals($tok->value, 42); + $tok = new Token('--42', TokenType::Number, Token::FLAG_NUMBER_NEGATIVE); + $this->assertEquals(42, $tok->value); - $tok = new Token('---42', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE); - $this->assertEquals($tok->value, -42); + $tok = new Token('---42', TokenType::Number, Token::FLAG_NUMBER_NEGATIVE); + $this->assertEquals(-42, $tok->value); - $tok = new Token('0xFE', Token::TYPE_NUMBER, Token::FLAG_NUMBER_HEX); - $this->assertEquals($tok->value, 0xFE); + $tok = new Token('0xFE', TokenType::Number, Token::FLAG_NUMBER_HEX); + $this->assertEquals(0xFE, $tok->value); - $tok = new Token('-0xEF', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE | Token::FLAG_NUMBER_HEX); - $this->assertEquals($tok->value, -0xEF); + $tok = new Token('-0xEF', TokenType::Number, Token::FLAG_NUMBER_NEGATIVE | Token::FLAG_NUMBER_HEX); + $this->assertEquals(-0xEF, $tok->value); - $tok = new Token('3.14', Token::TYPE_NUMBER, Token::FLAG_NUMBER_FLOAT); - $this->assertEquals($tok->value, 3.14); + $tok = new Token('3.14', TokenType::Number, Token::FLAG_NUMBER_FLOAT); + $this->assertEquals(3.14, $tok->value); } - public function testExtractString() + public function testExtractString(): void { - $tok = new Token('"foo bar "', Token::TYPE_STRING); - $this->assertEquals($tok->value, 'foo bar '); + $tok = new Token('"foo bar "', TokenType::String); + $this->assertEquals('foo bar ', $tok->value); - $tok = new Token("' bar foo '", Token::TYPE_STRING); - $this->assertEquals($tok->value, ' bar foo '); + $tok = new Token("' bar foo '", TokenType::String); + $this->assertEquals(' bar foo ', $tok->value); - $tok = new Token("'\''", Token::TYPE_STRING); - $this->assertEquals($tok->value, '\''); + $tok = new Token("'\''", TokenType::String); + $this->assertEquals('\'', $tok->value); - $tok = new Token('"\c\d\e\f\g\h\i\j\k\l\m\p\q\s\u\v\w\x\y\z"', Token::TYPE_STRING); - $this->assertEquals($tok->value, 'cdefghijklmpqsuvwxyz'); + $tok = new Token('"\c\d\e\f\g\h\i\j\k\l\m\p\q\s\u\v\w\x\y\z"', TokenType::String); + $this->assertEquals('cdefghijklmpqsuvwxyz', $tok->value); } - public function testExtractSymbol() + public function testExtractSymbol(): void { - $tok = new Token('@foo', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_VARIABLE); - $this->assertEquals($tok->value, 'foo'); + $tok = new Token('@foo', TokenType::Symbol, Token::FLAG_SYMBOL_VARIABLE); + $this->assertEquals('foo', $tok->value); - $tok = new Token('`foo`', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_BACKTICK); - $this->assertEquals($tok->value, 'foo'); + $tok = new Token('`foo`', TokenType::Symbol, Token::FLAG_SYMBOL_BACKTICK); + $this->assertEquals('foo', $tok->value); - $tok = new Token('@`foo`', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_VARIABLE); - $this->assertEquals($tok->value, 'foo'); + $tok = new Token('@`foo`', TokenType::Symbol, Token::FLAG_SYMBOL_VARIABLE); + $this->assertEquals('foo', $tok->value); - $tok = new Token(':foo', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_PARAMETER); - $this->assertEquals($tok->value, 'foo'); + $tok = new Token(':foo', TokenType::Symbol, Token::FLAG_SYMBOL_PARAMETER); + $this->assertEquals('foo', $tok->value); - $tok = new Token('?', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_PARAMETER); - $this->assertEquals($tok->value, '?'); + $tok = new Token('?', TokenType::Symbol, Token::FLAG_SYMBOL_PARAMETER); + $this->assertEquals('?', $tok->value); } - public function testInlineToken() + public function testInlineToken(): void { $token = new Token(" \r \n \t "); - $this->assertEquals($token->getInlineToken(), ' \r \n \t '); + $this->assertEquals(' \r \n \t ', $token->getInlineToken()); } } diff --git a/tests/Lexer/TokensListTest.php b/tests/Lexer/TokensListTest.php index c963fdd06..649096691 100644 --- a/tests/Lexer/TokensListTest.php +++ b/tests/Lexer/TokensListTest.php @@ -1,4 +1,5 @@ tokens = [ - new Token('SELECT', Token::TYPE_KEYWORD), - new Token(' ', Token::TYPE_WHITESPACE), - new Token('*', Token::TYPE_OPERATOR), - new Token(' ', Token::TYPE_WHITESPACE), - new Token('FROM', Token::TYPE_KEYWORD), - new Token(' ', Token::TYPE_WHITESPACE), - new Token('`test`', Token::TYPE_SYMBOL), - new Token(' ', Token::TYPE_WHITESPACE), + new Token('SELECT', TokenType::Keyword), + new Token(' ', TokenType::Whitespace), + new Token('*', TokenType::Operator), + new Token(' ', TokenType::Whitespace), + new Token('FROM', TokenType::Keyword, Token::FLAG_KEYWORD_RESERVED), + new Token(' ', TokenType::Whitespace), + new Token('`test`', TokenType::Symbol), + new Token(' ', TokenType::Whitespace), + new Token('WHERE', TokenType::Keyword, Token::FLAG_KEYWORD_RESERVED), + new Token(' ', TokenType::Whitespace), + new Token('name', TokenType::None), + new Token('=', TokenType::Operator), + new Token('fa', TokenType::None), ]; } - public function testBuild() + public function testBuild(): void { $list = new TokensList($this->tokens); - $this->assertEquals('SELECT * FROM `test` ', TokensList::build($list)); + $this->assertEquals('SELECT * FROM `test` WHERE name=fa', $list->build()); + $this->assertEquals('SELECT * FROM `test` WHERE name=fa', TokensList::buildFromArray($this->tokens)); } - public function testAdd() + public function testAdd(): void { $list = new TokensList(); foreach ($this->tokens as $token) { $list->add($token); } + $this->assertEquals(new TokensList($this->tokens), $list); } - public function testGetNext() + public function testGetNext(): void { $list = new TokensList($this->tokens); $this->assertEquals($this->tokens[0], $list->getNext()); $this->assertEquals($this->tokens[2], $list->getNext()); $this->assertEquals($this->tokens[4], $list->getNext()); $this->assertEquals($this->tokens[6], $list->getNext()); + $this->assertEquals($this->tokens[8], $list->getNext()); + $this->assertEquals($this->tokens[10], $list->getNext()); + $this->assertEquals($this->tokens[11], $list->getNext()); + $this->assertEquals($this->tokens[12], $list->getNext()); $this->assertNull($list->getNext()); } - public function testGetNextOfType() + public function testGetPrevious(): void + { + $list = new TokensList($this->tokens); + $list->idx = 7; + $this->assertEquals($this->tokens[6], $list->getPrevious()); + $this->assertEquals($this->tokens[4], $list->getPrevious()); + $this->assertEquals($this->tokens[2], $list->getPrevious()); + $this->assertEquals($this->tokens[0], $list->getPrevious()); + $this->assertNull($list->getPrevious()); + } + + public function testGetNextOfType(): void + { + $list = new TokensList($this->tokens); + $this->assertEquals($this->tokens[0], $list->getNextOfType(TokenType::Keyword)); + $this->assertEquals($this->tokens[4], $list->getNextOfType([TokenType::Keyword])); + $this->assertEquals($this->tokens[6], $list->getNextOfType([TokenType::Keyword, TokenType::Symbol])); + $this->assertEquals($this->tokens[8], $list->getNextOfType([TokenType::Keyword, TokenType::Symbol])); + $this->assertNull($list->getNextOfType(TokenType::Keyword)); + } + + public function testGetPreviousOfType(): void + { + $list = new TokensList($this->tokens); + $list->idx = 9; + $this->assertEquals($this->tokens[8], $list->getPreviousOfType([TokenType::Keyword, TokenType::Symbol])); + $this->assertEquals($this->tokens[6], $list->getPreviousOfType([TokenType::Keyword, TokenType::Symbol])); + $this->assertEquals($this->tokens[4], $list->getPreviousOfType([TokenType::Keyword])); + $this->assertEquals($this->tokens[0], $list->getPreviousOfType(TokenType::Keyword)); + $this->assertNull($list->getPreviousOfType(TokenType::Keyword)); + } + + public function testGetNextOfTypeAndFlag(): void { $list = new TokensList($this->tokens); - $this->assertEquals($this->tokens[0], $list->getNextOfType(Token::TYPE_KEYWORD)); - $this->assertEquals($this->tokens[4], $list->getNextOfType(Token::TYPE_KEYWORD)); - $this->assertNull($list->getNextOfType(Token::TYPE_KEYWORD)); + $this->assertEquals($this->tokens[4], $list->getNextOfTypeAndFlag( + TokenType::Keyword, + Token::FLAG_KEYWORD_RESERVED, + )); + $this->assertEquals($this->tokens[8], $list->getNextOfTypeAndFlag( + TokenType::Keyword, + Token::FLAG_KEYWORD_RESERVED, + )); + $this->assertNull($list->getNextOfTypeAndFlag(TokenType::Keyword, Token::FLAG_KEYWORD_RESERVED)); } - public function testGetNextOfTypeAndValue() + public function testGetNextOfTypeAndValue(): void { $list = new TokensList($this->tokens); - $this->assertEquals($this->tokens[0], $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'SELECT')); - $this->assertNull($list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'SELECT')); + $this->assertEquals($this->tokens[0], $list->getNextOfTypeAndValue(TokenType::Keyword, 'SELECT')); + $this->assertNull($list->getNextOfTypeAndValue(TokenType::Keyword, 'SELECT')); } - public function testArrayAccess() + public function testArrayAccess(): void { $list = new TokensList(); @@ -85,17 +140,41 @@ public function testArrayAccess() // offsetSet($offset, $value) $list[2] = $this->tokens[2]; + // offsetSet($offset, $value) with overflowed offset + $list[$list->count] = $this->tokens[1]; + $this->assertSame($list[$list->count - 1], $this->tokens[1]); + $this->assertSame($list->count, count($this->tokens) + 1); + + // offsetGet($offset) with negative offset + $this->assertNull($list[-1]); + + // offsetGet($offset) with overflow offset + $this->assertNull($list[$list->count]); + // offsetGet($offset) for ($i = 0, $count = count($this->tokens); $i < $count; ++$i) { - $this->assertEquals($this->tokens[$i], $list[$i]); + $this->assertSame($this->tokens[$i], $list[$i]); } // offsetExists($offset) $this->assertArrayHasKey(2, $list); - $this->assertArrayNotHasKey(8, $list); + $this->assertArrayNotHasKey(14, $list); + $this->assertArrayNotHasKey(-8, $list); // offsetUnset($offset) + $currentCountTokens = $list->count; unset($list[2]); - $this->assertEquals($this->tokens[3], $list[2]); + $newCountTokens = $list->count; + $this->assertSame($this->tokens[3], $list[2]); + $this->assertSame($currentCountTokens - 1, $newCountTokens); + + // offsetUnset($offset) with invalid offset (negative or overflowed) + $currentListTokens = $list->tokens; + unset($list[-1]); + $this->assertSame($currentListTokens, $list->tokens); + $this->assertSame($newCountTokens, $list->count); // No unset actually performed. + unset($list[999]); + $this->assertSame($currentListTokens, $list->tokens); + $this->assertSame($newCountTokens, $list->count); // No unset actually performed. } } diff --git a/tests/Misc/BugsTest.php b/tests/Misc/BugsTest.php index 3769b1f74..edfb2e824 100644 --- a/tests/Misc/BugsTest.php +++ b/tests/Misc/BugsTest.php @@ -1,32 +1,45 @@ runParserTest($test); } - public function bugProvider() + /** @return string[][] */ + public static function bugProvider(): array { return [ + ['bugs/fuzz1'], + ['bugs/fuzz2'], + ['bugs/fuzz3'], + ['bugs/fuzz4'], ['bugs/gh9'], ['bugs/gh14'], ['bugs/gh16'], + ['bugs/gh202'], + ['bugs/gh234'], + ['bugs/gh317'], + ['bugs/gh412'], + ['bugs/gh478'], + ['bugs/gh492'], + ['bugs/gh496'], + ['bugs/gh498'], + ['bugs/gh499'], + ['bugs/gh508'], + ['bugs/gh511'], ['bugs/pma11800'], ['bugs/pma11836'], ['bugs/pma11843'], - ['bugs/pma11867'], ['bugs/pma11879'], ]; } diff --git a/tests/Misc/ParameterTest.php b/tests/Misc/ParameterTest.php index accd19e42..773dba6e2 100644 --- a/tests/Misc/ParameterTest.php +++ b/tests/Misc/ParameterTest.php @@ -1,26 +1,26 @@ runParserTest($test); } - public function parameterProvider() + /** @return string[][] */ + public static function parameterProvider(): array { return [ ['misc/parseParameter'], + ['misc/parseParameter2'], ]; } } diff --git a/tests/Misc/TranslatorTest.php b/tests/Misc/TranslatorTest.php new file mode 100644 index 000000000..df2c4591d --- /dev/null +++ b/tests/Misc/TranslatorTest.php @@ -0,0 +1,96 @@ +setValue(null, null); + $translatorProperty = new ReflectionProperty(Translator::class, 'translator'); + $translatorProperty->setValue(null, null); + Translator::setLocale('en'); + } + + public function testLocale(): void + { + Translator::setLocale('en'); + self::assertSame('en', Translator::getLocale()); + Translator::setLocale('fr'); + self::assertSame('fr', Translator::getLocale()); + Translator::setLocale(''); + self::assertSame('', Translator::getLocale()); + } + + #[TestWith([null, 'en', 'en'])] + #[TestWith([null, 'fr', 'fr'])] + #[TestWith(['en', '', 'en'])] + #[TestWith(['fr', '', 'fr'])] + public function testLoad(string|null $globalLang, string $locale, string $expectedLocale): void + { + $loaderProperty = new ReflectionProperty(Translator::class, 'loader'); + $loaderProperty->setValue(null, null); + $translatorProperty = new ReflectionProperty(Translator::class, 'translator'); + $translatorProperty->setValue(null, null); + $GLOBALS['lang'] = $globalLang; + Translator::setLocale($locale); + + Translator::load(); + + self::assertSame($expectedLocale, Translator::getLocale()); + self::assertInstanceOf(MoTranslator::class, $translatorProperty->getValue()); + $loader = $loaderProperty->getValue(); + self::assertInstanceOf(Loader::class, $loader); + $loaderClass = new ReflectionClass(Loader::class); + $localeProperty = $loaderClass->getProperty('locale'); + self::assertSame($expectedLocale, $localeProperty->getValue($loader)); + // Compatibility with MoTranslator < 5 + $defaultDomainProperty = $loaderClass->hasProperty('default_domain') + ? $loaderClass->getProperty('default_domain') + : $loaderClass->getProperty('defaultDomain'); + self::assertSame('sqlparser', $defaultDomainProperty->getValue($loader)); + $pathsProperty = $loaderClass->getProperty('paths'); + self::assertSame( + ['' => './', 'sqlparser' => realpath(__DIR__ . '/../../src/') . '/../locale/'], + $pathsProperty->getValue($loader), + ); + } + + public function testGettext(): void + { + $loaderProperty = new ReflectionProperty(Translator::class, 'loader'); + $loaderProperty->setValue(null, null); + $translatorProperty = new ReflectionProperty(Translator::class, 'translator'); + $translatorProperty->setValue(null, null); + Translator::setLocale('pt_BR'); + self::assertSame( + 'Início de declaração inesperado.', + Translator::gettext('Unexpected beginning of statement.'), + ); + + $loaderProperty = new ReflectionProperty(Translator::class, 'loader'); + $loaderProperty->setValue(null, null); + $translatorProperty = new ReflectionProperty(Translator::class, 'translator'); + $translatorProperty->setValue(null, null); + Translator::setLocale('en'); + self::assertSame( + 'Unexpected beginning of statement.', + Translator::gettext('Unexpected beginning of statement.'), + ); + } +} diff --git a/tests/Misc/UtfStringTest.php b/tests/Misc/UtfStringTest.php index c83339ac7..9a3e7b7f6 100644 --- a/tests/Misc/UtfStringTest.php +++ b/tests/Misc/UtfStringTest.php @@ -1,95 +1,69 @@ assertArrayHasKey(static::TEST_PHRASE_LEN - 1, $str); + $this->assertArrayHasKey(self::TEST_PHRASE_LEN - 1, $str); $this->assertArrayNotHasKey(-1, $str); - $this->assertArrayNotHasKey(static::TEST_PHRASE_LEN, $str); + $this->assertArrayNotHasKey(self::TEST_PHRASE_LEN, $str); // offsetGet - $this->assertEquals('.', $str[static::TEST_PHRASE_LEN - 1]); - $this->assertNull($str[-1]); - $this->assertNull($str[static::TEST_PHRASE_LEN]); + $this->assertEquals('.', $str[self::TEST_PHRASE_LEN - 1]); + $this->assertEquals('', $str[-1]); + $this->assertEquals('', $str[self::TEST_PHRASE_LEN]); } - public function testSet() + public function testSet(): void { $this->expectExceptionMessage('Not implemented.'); - $this->expectException(\Exception::class); + $this->expectException(Throwable::class); $str = new UtfString(''); $str[0] = 'a'; } - public function testUnset() + public function testUnset(): void { $this->expectExceptionMessage('Not implemented.'); - $this->expectException(\Exception::class); + $this->expectException(Throwable::class); $str = new UtfString(''); unset($str[0]); } - public function testGetCharLength() - { - $this->assertEquals(1, UtfString::getCharLength(chr(0x00))); // 00000000 - $this->assertEquals(1, UtfString::getCharLength(chr(0x7F))); // 01111111 - - $this->assertEquals(2, UtfString::getCharLength(chr(0xC0))); // 11000000 - $this->assertEquals(2, UtfString::getCharLength(chr(0xDF))); // 11011111 - - $this->assertEquals(3, UtfString::getCharLength(chr(0xE0))); // 11100000 - $this->assertEquals(3, UtfString::getCharLength(chr(0xEF))); // 11101111 - - $this->assertEquals(4, UtfString::getCharLength(chr(0xF0))); // 11110000 - $this->assertEquals(4, UtfString::getCharLength(chr(0xF7))); // 11110111 - - $this->assertEquals(5, UtfString::getCharLength(chr(0xF8))); // 11111000 - $this->assertEquals(5, UtfString::getCharLength(chr(0xFB))); // 11111011 - - $this->assertEquals(6, UtfString::getCharLength(chr(0xFC))); // 11111100 - $this->assertEquals(6, UtfString::getCharLength(chr(0xFD))); // 11111101 - } - - public function testToString() + public function testToString(): void { - $str = new UtfString(static::TEST_PHRASE); - $this->assertEquals(static::TEST_PHRASE, (string) $str); + $str = new UtfString(self::TEST_PHRASE); + $this->assertEquals(self::TEST_PHRASE, (string) $str); } /** * Test access to string. - * - * @dataProvider utf8Strings - * - * @param mixed $text - * @param mixed $pos10 - * @param mixed $pos20 */ - public function testAccess($text, $pos10, $pos20) + #[DataProvider('utf8StringsProvider')] + public function testAccess(string $text, string|null $pos10, string|null $pos20): void { $str = new UtfString($text); $this->assertEquals($pos10, $str->offsetGet(10)); @@ -97,7 +71,11 @@ public function testAccess($text, $pos10, $pos20) $this->assertEquals($pos10, $str->offsetGet(10)); } - public function utf8Strings() + /** + * @return array> + * @psalm-return array + */ + public static function utf8StringsProvider(): array { return [ 'ascii' => [ @@ -111,7 +89,7 @@ public function utf8Strings() 'č', ], 'emoji' => [ - '😂😄😃😀😊😉😍😘😚😗😂👿😮😨😱😠😡😤😖😆😋👯', + '🦋😄😃😀😊😉😍😘😚😗😂👿😮😨😱😠😡😤😖😆😋👯', '😂', '😋', ], @@ -120,6 +98,11 @@ public function utf8Strings() null, null, ], + 'random' => [ + 'xℤⅿↈⅬ⅀ↆℜℝ⅗ℾ℧ⅰℓⅯⅵⅣ⅒21⅞', + 'ℾ', + '⅞', + ], ]; } } diff --git a/tests/Parser/AlterStatementTest.php b/tests/Parser/AlterStatementTest.php index 9651b9f60..ff791d08f 100644 --- a/tests/Parser/AlterStatementTest.php +++ b/tests/Parser/AlterStatementTest.php @@ -1,23 +1,22 @@ runParserTest($test); } - public function alterProvider() + /** @return string[][] */ + public static function alterProvider(): array { return [ ['parser/parseAlter'], @@ -30,9 +29,85 @@ public function alterProvider() ['parser/parseAlter8'], ['parser/parseAlter9'], ['parser/parseAlter10'], + ['parser/parseAlter11'], + ['parser/parseAlter12'], + ['parser/parseAlter13'], + ['parser/parseAlter14'], ['parser/parseAlterErr'], ['parser/parseAlterErr2'], ['parser/parseAlterErr3'], + ['parser/parseAlterErr4'], + ['parser/parseAlterTableRenameIndex1'], + ['parser/parseAlterTableRenameIndex2'], + ['parser/parseAlterTableRenameKey1'], + ['parser/parseAlterTableRenameKey2'], + ['parser/parseAlterTablePartitionByRange1'], + ['parser/parseAlterTablePartitionByRange2'], + ['parser/parseAlterTableCoalescePartition'], + ['parser/parseAlterTableAddColumnWithCheck'], + ['parser/parseAlterTableAddSpatialIndex1'], + ['parser/parseAlterTableAddUniqueKey1'], + ['parser/parseAlterTableAddUniqueKey2'], + ['parser/parseAlterTableDropAddIndex1'], + ['parser/parseAlterTableDropColumn1'], + ['parser/parseAlterTableModifyColumn'], + ['parser/parseAlterTableModifyColumnEnum1'], + ['parser/parseAlterTableModifyColumnEnum2'], + ['parser/parseAlterTableModifyColumnEnum3'], + ['parser/parseAlterWithInvisible'], + ['parser/parseAlterTableCharacterSet1'], + ['parser/parseAlterTableCharacterSet2'], + ['parser/parseAlterTableCharacterSet3'], + ['parser/parseAlterTableCharacterSet4'], + ['parser/parseAlterTableCharacterSet5'], + ['parser/parseAlterTableCharacterSet6'], + ['parser/parseAlterTableCharacterSet7'], + ['parser/parseAlterUser'], + ['parser/parseAlterUser1'], + ['parser/parseAlterUser2'], + ['parser/parseAlterUser3'], + ['parser/parseAlterUser4'], + ['parser/parseAlterUser5'], + ['parser/parseAlterUser6'], + ['parser/parseAlterUser7'], + ['parser/parseAlterUser8'], + ['parser/parseAlterUser9'], + ['parser/parseAlterUser10'], + ['parser/parseAlterEvent'], + ['parser/parseAlterEvent2'], + ['parser/parseAlterEvent3'], + ['parser/parseAlterEvent4'], + ['parser/parseAlterEvent5'], + ['parser/parseAlterEvent6'], + ['parser/parseAlterEvent7'], + ['parser/parseAlterEvent8'], + ['parser/parseAlterEvent9'], + ['parser/parseAlterEventComplete'], + ['parser/parseAlterEventErr'], + ['parser/parseAlterEventOnScheduleAt'], + ['parser/parseAlterEventOnScheduleAt2'], + ['parser/parseAlterEventOnScheduleEvery'], + ['parser/parseAlterEventOnScheduleEvery2'], + ['parser/parseAlterEventOnScheduleEvery3'], + ['parser/parseAlterEventOnScheduleEvery4'], + ['parser/parseAlterEventOnScheduleEvery5'], + ['parser/parseAlterEventOnScheduleEvery6'], + ['parser/parseAlterEventWithDefiner'], + ['parser/parseAlterEventWithOtherDefiners'], + ['parser/parseAlterRenameColumn'], + ['parser/parseAlterRenameColumns'], + ['parser/parseAlterFunction1'], + ['parser/parseAlterFunction2'], + ['parser/parseAlterFunction3'], + ['parser/parseAlterFunction4'], + ['parser/parseAlterFunction5'], + ['parser/parseAlterFunction6'], + ['parser/parseAlterProcedure1'], + ['parser/parseAlterProcedure2'], + ['parser/parseAlterProcedure3'], + ['parser/parseAlterProcedure4'], + ['parser/parseAlterProcedure5'], + ['parser/parseAlterProcedure6'], ]; } } diff --git a/tests/Parser/AnalyzeStatementTest.php b/tests/Parser/AnalyzeStatementTest.php new file mode 100644 index 000000000..dd17c976a --- /dev/null +++ b/tests/Parser/AnalyzeStatementTest.php @@ -0,0 +1,28 @@ +runParserTest($test); + } + + /** @return string[][] */ + public static function analyzeProvider(): array + { + return [ + ['parser/parseAnalyzeTable'], + ['parser/parseAnalyzeTable1'], + ['parser/parseAnalyzeErr1'], + ['parser/parseAnalyzeErr2'], + ]; + } +} diff --git a/tests/Parser/CallStatementTest.php b/tests/Parser/CallStatementTest.php index 7ea75d911..8dd87cf65 100644 --- a/tests/Parser/CallStatementTest.php +++ b/tests/Parser/CallStatementTest.php @@ -1,28 +1,29 @@ runParserTest($test); } - public function callProvider() + /** @return string[][] */ + public static function callProvider(): array { return [ ['parser/parseCall'], ['parser/parseCall2'], ['parser/parseCall3'], + ['parser/parseCall4'], + ['parser/parseCall5'], ]; } } diff --git a/tests/Parser/CreateStatementTest.php b/tests/Parser/CreateStatementTest.php index b44ab1467..7eaf49572 100644 --- a/tests/Parser/CreateStatementTest.php +++ b/tests/Parser/CreateStatementTest.php @@ -1,31 +1,37 @@ runParserTest($test); } - public function createProvider() + /** @return string[][] */ + public static function createProvider(): array { return [ + ['parser/parseCreateDatabase'], + ['parser/parseCreateDatabaseErr'], ['parser/parseCreateFunction'], ['parser/parseCreateFunctionErr1'], ['parser/parseCreateFunctionErr2'], ['parser/parseCreateFunctionErr3'], ['parser/parseCreateProcedure'], + ['parser/parseCreateProcedure1'], ['parser/parseCreateProcedure2'], + ['parser/parseCreateProcedure3'], + ['parser/parseCreateProcedure4'], + ['parser/parseCreateSchema'], + ['parser/parseCreateSchemaErr'], ['parser/parseCreateTable'], ['parser/parseCreateTable2'], ['parser/parseCreateTable3'], @@ -33,6 +39,17 @@ public function createProvider() ['parser/parseCreateTable5'], ['parser/parseCreateTable6'], ['parser/parseCreateTable7'], + ['parser/parseCreateTable8'], + ['parser/parseCreateTable9'], + ['parser/parseCreateTable10'], + ['parser/parseCreateTable11'], + ['parser/parseCreateTable12'], + ['parser/parseCreateTable13'], + ['parser/parseCreateTable14'], + ['parser/parseCreateTable15'], + ['parser/parseCreateTable16'], + ['parser/parseCreateTable17'], + ['parser/parseCreateTable18'], ['parser/parseCreateTableErr1'], ['parser/parseCreateTableErr2'], ['parser/parseCreateTableErr3'], @@ -42,13 +59,27 @@ public function createProvider() ['parser/parseCreateTableAsSelect'], ['parser/parseCreateTableLike'], ['parser/parseCreateTableSpatial'], + ['parser/parseCreateTableSRID'], ['parser/parseCreateTableTimestampWithPrecision'], + ['parser/parseCreateTableEnforcedCheck'], + ['parser/parseCreateTableNotEnforcedCheck'], + ['parser/parseCreateTableWithInvisibleKey'], + ['parser/parseCreateTableWithParser'], ['parser/parseCreateTrigger'], - ['parser/parseCreateUser'], + ['parser/parseCreateUser1'], + ['parser/parseCreateUser2'], ['parser/parseCreateView'], ['parser/parseCreateView2'], + ['parser/parseCreateView3'], + ['parser/parseCreateView4'], + ['parser/parseCreateView5'], + ['parser/parseCreateViewMultiple'], ['parser/parseCreateViewWithoutQuotes'], ['parser/parseCreateViewWithQuotes'], + ['parser/parseCreateViewWithWrongSyntax'], + ['parser/parseCreateViewWithUnion'], + ['parser/parseCreateViewAsWithAs'], + ['parser/parseCreateOrReplaceView1'], ]; } } diff --git a/tests/Parser/DeleteStatementTest.php b/tests/Parser/DeleteStatementTest.php index 3c22fa73e..c9cab06fb 100644 --- a/tests/Parser/DeleteStatementTest.php +++ b/tests/Parser/DeleteStatementTest.php @@ -1,23 +1,22 @@ runParserTest($test); } - public function deleteProvider() + /** @return string[][] */ + public static function deleteProvider(): array { return [ ['parser/parseDelete'], diff --git a/tests/Parser/DropStatementTest.php b/tests/Parser/DropStatementTest.php new file mode 100644 index 000000000..5685c39d0 --- /dev/null +++ b/tests/Parser/DropStatementTest.php @@ -0,0 +1,26 @@ +runParserTest($test); + } + + /** @return string[][] */ + public static function dropProvider(): array + { + return [ + ['parser/parseDrop'], + ['parser/parseDrop2'], + ]; + } +} diff --git a/tests/Parser/ExplainStatementTest.php b/tests/Parser/ExplainStatementTest.php index a6a51af6c..26552a4ac 100644 --- a/tests/Parser/ExplainStatementTest.php +++ b/tests/Parser/ExplainStatementTest.php @@ -1,26 +1,43 @@ runParserTest($test); } - public function explainProvider() + /** @return string[][] */ + public static function explainProvider(): array { return [ ['parser/parseExplain'], + ['parser/parseExplain1'], + ['parser/parseExplain2'], + ['parser/parseExplain3'], + ['parser/parseExplain4'], + ['parser/parseExplain5'], + ['parser/parseExplain6'], + ['parser/parseExplain7'], + ['parser/parseExplain8'], + ['parser/parseExplain9'], + ['parser/parseExplain10'], + ['parser/parseExplain11'], + ['parser/parseExplain12'], + ['parser/parseExplain13'], + ['parser/parseExplain14'], + ['parser/parseExplainErr'], + ['parser/parseExplainErr1'], + ['parser/parseExplainErr2'], + ['parser/parseExplainErr3'], ]; } } diff --git a/tests/Parser/InsertStatementTest.php b/tests/Parser/InsertStatementTest.php index cbc8fb91b..3a285c9b3 100644 --- a/tests/Parser/InsertStatementTest.php +++ b/tests/Parser/InsertStatementTest.php @@ -1,26 +1,26 @@ runParserTest($test); } - public function insertProvider() + /** @return string[][] */ + public static function insertProvider(): array { return [ ['parser/parseInsert'], + ['parser/parseInsertFunction'], ['parser/parseInsertSelect'], ['parser/parseInsertOnDuplicateKey'], ['parser/parseInsertSetOnDuplicateKey'], diff --git a/tests/Parser/KillStatementTest.php b/tests/Parser/KillStatementTest.php new file mode 100644 index 000000000..5cf5041fa --- /dev/null +++ b/tests/Parser/KillStatementTest.php @@ -0,0 +1,68 @@ +runParserTest($test); + } + + /** @return string[][] */ + public static function killProvider(): array + { + return [ + ['parser/parseKill'], + ['parser/parseKill2'], + ['parser/parseKill3'], + ['parser/parseKillConnection'], + ['parser/parseKillQuery'], + ['parser/parseKillErr1'], + ['parser/parseKillErr2'], + ['parser/parseKillErr3'], + ['parser/parseKillErr4'], + ]; + } + + #[DataProvider('buildKillProvider')] + public function testBuildKill(string $sql): void + { + $parser = new Parser($sql); + $this->assertCount(1, $parser->statements); + $statement = $parser->statements[0]; + $this->assertInstanceOf(KillStatement::class, $statement); + $builtSql = $statement->build(); + $this->assertEquals($sql, $builtSql); + } + + /** + * @return array> + * @psalm-return list> + */ + public static function buildKillProvider(): array + { + return [ + ['KILL (SELECT 3 + 4)'], + ['KILL QUERY 4'], + ['KILL CONNECTION 5'], + ['KILL 6'], + ['KILL QUERY (SELECT 7)'], + ['KILL SOFT QUERY (SELECT 8)'], + ['KILL HARD 9'], + ['KILL USER 10'], + ['KILL SOFT (SELECT 1)'], + ['KILL (2)'], + ['KILL QUERY ID (2)'], + ['KILL QUERY ID (SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST LIMIT 0, 1)'], + ]; + } +} diff --git a/tests/Parser/LoadStatementTest.php b/tests/Parser/LoadStatementTest.php index e56246df4..ca99f4bdd 100644 --- a/tests/Parser/LoadStatementTest.php +++ b/tests/Parser/LoadStatementTest.php @@ -1,32 +1,32 @@ getData('parser/parseLoad1'); $parser = new Parser($data['query']); $stmt = $parser->statements[0]; - $this->assertEquals(10, $stmt->options->has('CONCURRENT')); + $this->assertNotNull($stmt->options); + $this->assertTrue($stmt->options->has('CONCURRENT')); } - /** - * @dataProvider loadProvider - * - * @param mixed $test - */ - public function testLoad($test) + #[DataProvider('loadProvider')] + public function testLoad(string $test): void { $this->runParserTest($test); } - public function loadProvider() + /** @return string[][] */ + public static function loadProvider(): array { return [ ['parser/parseLoad1'], @@ -35,6 +35,8 @@ public function loadProvider() ['parser/parseLoad4'], ['parser/parseLoad5'], ['parser/parseLoad6'], + ['parser/parseLoad7'], + ['parser/parseLoad8'], ['parser/parseLoadErr1'], ['parser/parseLoadErr2'], ['parser/parseLoadErr3'], diff --git a/tests/Parser/LockStatementTest.php b/tests/Parser/LockStatementTest.php index 54c18e83a..30dce522f 100644 --- a/tests/Parser/LockStatementTest.php +++ b/tests/Parser/LockStatementTest.php @@ -1,23 +1,22 @@ runParserTest($test); } - public function lockProvider() + /** @return string[][] */ + public static function lockProvider(): array { return [ ['parser/parseLock1'], diff --git a/tests/Parser/ParserLongExportsTest.php b/tests/Parser/ParserLongExportsTest.php new file mode 100644 index 000000000..c463d3002 --- /dev/null +++ b/tests/Parser/ParserLongExportsTest.php @@ -0,0 +1,118 @@ +parse(); + + $sql = []; + foreach ($parser->statements as $stmt) { + $sql[] = $stmt->__toString(); + } + + $this->assertEquals($expectedSql, $sql); + } + + public function testParsephpMyAdminDump(): void + { + $data = $this->getData('parser/parsephpMyAdminExport1'); + $parser = new Parser($data['query']); + $collectedSetStatements = []; + foreach ($parser->statements as $statement) { + if ($statement instanceof TransactionStatement) { + $this->assertNotNull($statement->statements); + foreach ($statement->statements as $transactionStatement) { + if (! $transactionStatement instanceof SetStatement) { + continue; + } + + $collectedSetStatements[] = $transactionStatement->build(); + } + + continue; + } + + if (! $statement instanceof SetStatement) { + continue; + } + + $collectedSetStatements[] = $statement->build(); + } + + $this->assertEquals([ + 'SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"', + 'SET AUTOCOMMIT = 0', + 'SET time_zone = "+00:00"', + 'SET @OLD_CHARACTER_SET_CLIENT = @@CHARACTER_SET_CLIENT', + 'SET @OLD_CHARACTER_SET_RESULTS = @@CHARACTER_SET_RESULTS', + 'SET @OLD_COLLATION_CONNECTION = @@COLLATION_CONNECTION', + 'SET NAMES utf8mb4', + 'SET CHARACTER_SET_CLIENT = @OLD_CHARACTER_SET_CLIENT', + 'SET CHARACTER_SET_RESULTS = @OLD_CHARACTER_SET_RESULTS', + 'SET COLLATION_CONNECTION = @OLD_COLLATION_CONNECTION', + ], $collectedSetStatements); + + foreach ($parser->statements as $stmt) { + // Check they all build + $this->assertIsString($stmt->build()); + } + } + + #[DataProvider('exportFileProvider')] + public function testParseExport(string $test): void + { + $this->runParserTest($test); + } + + /** @return string[][] */ + public static function exportFileProvider(): array + { + return [ + ['parser/parsephpMyAdminExport1'], + ]; + } +} diff --git a/tests/Parser/ParserTest.php b/tests/Parser/ParserTest.php index d88c861f0..5d7ade27f 100644 --- a/tests/Parser/ParserTest.php +++ b/tests/Parser/ParserTest.php @@ -1,4 +1,5 @@ runParserTest($test); } - public function parseProvider() + /** @return string[][] */ + public static function parseProvider(): array { return [ ['parser/parse'], @@ -30,29 +33,27 @@ public function parseProvider() ]; } - public function testUnrecognizedStatement() + public function testUnrecognizedStatement(): void { $parser = new Parser('SELECT 1; FROM'); $this->assertEquals( 'Unrecognized statement type.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } - public function testUnrecognizedKeyword() + public function testUnrecognizedKeyword(): void { $parser = new Parser('SELECT 1 FROM foo PARTITION(bar, baz) AS'); $this->assertEquals( 'Unrecognized keyword.', - $parser->errors[0]->getMessage() + $parser->errors[0]->getMessage(), ); } - /** - * @runInSeparateProcess - * @preserveGlobalState disabled - */ - public function testError() + #[RunInSeparateProcess] + #[PreserveGlobalState(false)] + public function testError(): void { $parser = new Parser(new TokensList()); @@ -60,21 +61,20 @@ public function testError() $parser->error(sprintf('%2$s #%1$d', 2, 'error'), new Token('bar'), 2); $this->assertEquals( - $parser->errors, [ new ParserException('error #1', new Token('foo'), 1), new ParserException('error #2', new Token('bar'), 2), - ] + ], + $parser->errors, ); } - public function testErrorStrict() + public function testErrorStrict(): void { $this->expectExceptionCode(3); $this->expectExceptionMessage('strict error'); $this->expectException(ParserException::class); - $parser = new Parser(new TokensList()); - $parser->strict = true; + $parser = new Parser(new TokensList(), true); $parser->error('strict error', new Token('foo'), 3); } diff --git a/tests/Parser/PurgeStatementTest.php b/tests/Parser/PurgeStatementTest.php index 62ef92341..703772e30 100644 --- a/tests/Parser/PurgeStatementTest.php +++ b/tests/Parser/PurgeStatementTest.php @@ -1,23 +1,22 @@ runParserTest($test); } - public function purgeProvider() + /** @return string[][] */ + public static function purgeProvider(): array { return [ ['parser/parsePurge'], diff --git a/tests/Parser/RenameStatementTest.php b/tests/Parser/RenameStatementTest.php index 6f8967c51..5ba90ff4c 100644 --- a/tests/Parser/RenameStatementTest.php +++ b/tests/Parser/RenameStatementTest.php @@ -1,23 +1,22 @@ runParserTest($test); } - public function renameProvider() + /** @return string[][] */ + public static function renameProvider(): array { return [ ['parser/parseRename'], diff --git a/tests/Parser/ReplaceStatementTest.php b/tests/Parser/ReplaceStatementTest.php index 1850b1761..4d2a9d8a6 100644 --- a/tests/Parser/ReplaceStatementTest.php +++ b/tests/Parser/ReplaceStatementTest.php @@ -1,23 +1,22 @@ runParserTest($test); } - public function replaceProvider() + /** @return string[][] */ + public static function replaceProvider(): array { return [ ['parser/parseReplace'], diff --git a/tests/Parser/RestoreStatementTest.php b/tests/Parser/RestoreStatementTest.php index 2d1aa7305..02f906ce0 100644 --- a/tests/Parser/RestoreStatementTest.php +++ b/tests/Parser/RestoreStatementTest.php @@ -1,23 +1,22 @@ runParserTest($test); } - public function restoreProvider() + /** @return string[][] */ + public static function restoreProvider(): array { return [ ['parser/parseRestore'], diff --git a/tests/Parser/SelectStatementTest.php b/tests/Parser/SelectStatementTest.php index 91b8e82db..16178d6fd 100644 --- a/tests/Parser/SelectStatementTest.php +++ b/tests/Parser/SelectStatementTest.php @@ -1,32 +1,32 @@ getData('parser/parseSelect'); $parser = new Parser($data['query']); $stmt = $parser->statements[0]; - $this->assertEquals(10, $stmt->options->has('MAX_STATEMENT_TIME')); + $this->assertNotNull($stmt->options); + $this->assertEquals(10, $stmt->options->get('MAX_STATEMENT_TIME')); } - /** - * @dataProvider selectProvider - * - * @param mixed $test - */ - public function testSelect($test) + #[DataProvider('selectProvider')] + public function testSelect(string $test): void { $this->runParserTest($test); } - public function selectProvider() + /** @return string[][] */ + public static function selectProvider(): array { return [ ['parser/parseSelect2'], @@ -39,6 +39,12 @@ public function selectProvider() ['parser/parseSelect9'], ['parser/parseSelect10'], ['parser/parseSelect11'], + ['parser/parseSelect12'], + ['parser/parseSelect13'], + ['parser/parseSelect14'], + ['parser/parseSelect15'], + ['parser/parseSelect16'], + ['parser/parseSelectAggregateWithPartitionAndAlias'], ['parser/parseSelectErr1'], ['parser/parseSelectErr2'], ['parser/parseSelectNested'], @@ -62,6 +68,7 @@ public function selectProvider() ['parser/parseSelectCaseAliasErr2'], ['parser/parseSelectCaseAliasErr3'], ['parser/parseSelectCaseAliasErr4'], + ['parser/parseSelectExists'], ['parser/parseSelectIntoOptions1'], ['parser/parseSelectIntoOptions2'], ['parser/parseSelectIntoOptions3'], @@ -80,12 +87,22 @@ public function selectProvider() ['parser/parseSelectEndOptionsErr'], ['parser/parseSelectUnion'], ['parser/parseSelectUnion2'], + ['parser/parseSelectWhere'], + ['parser/parseSelectWhereCollate'], ['parser/parseSelectIndexHint1'], ['parser/parseSelectIndexHint2'], + ['parser/parseSelectOrderByIsNull'], ['parser/parseSelectIndexHintErr1'], ['parser/parseSelectIndexHintErr2'], ['parser/parseSelectIndexHintErr3'], ['parser/parseSelectIndexHintErr4'], + ['parser/parseSelectWithParenthesis'], + ['parser/parseSelectOrderByComment'], + ['parser/parseSelectOverAlias_mariadb_100600'], + ['parser/parseSelectGroupBy'], + ['parser/parseSelectGroupByErr'], + ['parser/parseSelectGroupByWithComments'], + ['parser/parseTable1'], ]; } } diff --git a/tests/Parser/SetStatementTest.php b/tests/Parser/SetStatementTest.php index 4a5eea990..32896e8e9 100644 --- a/tests/Parser/SetStatementTest.php +++ b/tests/Parser/SetStatementTest.php @@ -1,32 +1,36 @@ runParserTest($test); } - public function setProvider() + /** @return string[][] */ + public static function setProvider(): array { return [ ['parser/parseSetCharset'], ['parser/parseSetCharsetError'], ['parser/parseSetCharacterSet'], ['parser/parseSetCharacterSetError'], + ['parser/parseAlterTableSetAutoIncrementError'], ['parser/parseSetNames'], ['parser/parseSetNamesError'], ['parser/parseSetError1'], + ['parser/parseInsertIntoSet'], + ['parser/parseSetVariable'], + ['parser/parseSetVariable2'], + ['parser/parseSetGlobalVariable'], ]; } } diff --git a/tests/Parser/TransactionStatementTest.php b/tests/Parser/TransactionStatementTest.php index 4e561f8ab..86ba3dd4c 100644 --- a/tests/Parser/TransactionStatementTest.php +++ b/tests/Parser/TransactionStatementTest.php @@ -1,28 +1,43 @@ getData('parser/parseTransaction4'); + $parser = new Parser($data['query']); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'START TRANSACTION;SET time_zone = "+00:00";', + $stmt->build(), + ); + } + + #[DataProvider('transactionProvider')] + public function testTransaction(string $test): void { $this->runParserTest($test); } - public function transactionProvider() + /** @return string[][] */ + public static function transactionProvider(): array { return [ ['parser/parseTransaction'], ['parser/parseTransaction2'], ['parser/parseTransaction3'], + ['parser/parseTransaction4'], + ['parser/parseTransaction5'], + ['parser/parseTransaction6'], + ['parser/parseTransaction7'], ['parser/parseTransactionErr1'], ]; } diff --git a/tests/Parser/UpdateStatementTest.php b/tests/Parser/UpdateStatementTest.php index b0e5b01d1..e7ef04a28 100644 --- a/tests/Parser/UpdateStatementTest.php +++ b/tests/Parser/UpdateStatementTest.php @@ -1,29 +1,33 @@ runParserTest($test); } - public function updateProvider() + /** @return string[][] */ + public static function updateProvider(): array { return [ - ['parser/parseUpdate'], + ['parser/parseUpdate1'], ['parser/parseUpdate2'], ['parser/parseUpdate3'], + ['parser/parseUpdate4'], + ['parser/parseUpdate5'], + ['parser/parseUpdate6'], + ['parser/parseUpdate7'], ['parser/parseUpdateErr'], + ['parser/parseUpdateEmptySet'], ]; } } diff --git a/tests/Parser/WithStatementTest.php b/tests/Parser/WithStatementTest.php new file mode 100644 index 000000000..a6c716c7b --- /dev/null +++ b/tests/Parser/WithStatementTest.php @@ -0,0 +1,202 @@ +runParserTest($test); + } + + /** @return string[][] */ + public static function parseWith(): array + { + return [ + ['parser/parseWithStatement'], + ['parser/parseWithStatement1'], + ['parser/parseWithStatement2'], + ['parser/parseWithStatement3'], + ['parser/parseWithStatement4'], + ['parser/parseWithStatement5'], + ['parser/parseWithStatement6'], + ['parser/parseWithStatement7'], + ['parser/parseWithStatementErr'], + ['parser/parseWithStatementErr1'], + ['parser/parseWithStatementErr2'], + ['parser/parseWithStatementErr3'], + ['parser/parseWithStatementErr4'], + ['parser/parseWithStatementErr5'], + ['parser/parseWithStatementErr6'], + ['parser/parseWithStatementErr7'], + ['parser/parseWithStatementErr8'], + ]; + } + + public function testWith(): void + { + $sql = <<<'SQL' +WITH categories(identifier, name, parent_id) AS ( + SELECT c.identifier, c.name, c.parent_id FROM category c WHERE c.identifier = 'a' + UNION ALL + SELECT c.identifier, c.name, c.parent_id FROM categories, category c WHERE c.identifier = categories.parent_id +), foo AS ( SELECT * FROM test ) +SELECT * FROM categories +SQL; + + $lexer = new Lexer($sql); + + $lexerErrors = $this->getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(0, $parserErrors); + $this->assertCount(1, $parser->statements); + + // phpcs:disable Generic.Files.LineLength.TooLong + $expected = <<<'SQL' +WITH categories(identifier, name, parent_id) AS (SELECT c.identifier, c.name, c.parent_id FROM category AS `c` WHERE c.identifier = 'a' UNION ALL SELECT c.identifier, c.name, c.parent_id FROM categories, category AS `c` WHERE c.identifier = categories.parent_id), foo AS (SELECT * FROM test) SELECT * FROM categories +SQL; + // phpcs:enable + $this->assertEquals($expected, $parser->statements[0]->build()); + } + + public function testWithRecursive(): void + { + $sql = <<<'SQL' +WITH RECURSIVE number_sequence AS ( + SELECT 1 AS `number` + UNION ALL + SELECT `number` + 1 + FROM number_sequence + WHERE `number` < 5 +) +SELECT * FROM number_sequence; +SQL; + + $lexer = new Lexer($sql); + + $lexerErrors = $this->getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(0, $parserErrors); + $this->assertCount(1, $parser->statements); + + // phpcs:disable Generic.Files.LineLength.TooLong + $expected = <<<'SQL' +WITH RECURSIVE number_sequence AS (SELECT 1 AS `number` UNION ALL SELECT `number`+ 1 FROM number_sequence WHERE `number` < 5) SELECT * FROM number_sequence +SQL; + // phpcs:enable + $this->assertEquals($expected, $parser->statements[0]->build()); + } + + public function testWithRecursiveWithers(): void + { + $sql = <<<'SQL' +WITH RECURSIVE cte AS +( + SELECT 1 AS n, CAST('abc' AS CHAR(20)) AS str + UNION ALL + SELECT n + 1, CONCAT(str, str) FROM cte WHERE n < 3 +), cte2 AS +( + SELECT 1 AS n, CAST('def' AS CHAR(20)) AS str + UNION ALL + SELECT n + 1, CONCAT(str, str) FROM cte WHERE n < 3 +) +SELECT * FROM cte UNION SELECT * FROM cte2; +SQL; + + $lexer = new Lexer($sql); + + $lexerErrors = $this->getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(0, $parserErrors); + $this->assertCount(1, $parser->statements); + + // phpcs:disable Generic.Files.LineLength.TooLong + $expected = <<<'SQL' +WITH RECURSIVE cte AS (SELECT 1 AS `n`, CAST('abc' AS CHAR(20)) AS `str` UNION ALL SELECT n+ 1, CONCAT(str, str) FROM cte WHERE n < 3), cte2 AS (SELECT 1 AS `n`, CAST('def' AS CHAR(20)) AS `str` UNION ALL SELECT n+ 1, CONCAT(str, str) FROM cte WHERE n < 3) SELECT * FROM cte UNION SELECT * FROM cte2 +SQL; + // phpcs:enable + $this->assertEquals($expected, $parser->statements[0]->build()); + } + + public function testWithHasErrors(): void + { + $sql = <<<'SQL' +WITH categories(identifier, name, parent_id) AS ( + SOMETHING * FROM foo +) +SELECT * FROM categories +SQL; + + $lexer = new Lexer($sql); + + $lexerErrors = $this->getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(4, $parserErrors); + } + + public function testWithEmbedParenthesis(): void + { + $sql = <<<'SQL' +WITH categories AS ( + SELECT * FROM (SELECT * FROM foo) +) +SELECT * FROM categories +SQL; + + $lexer = new Lexer($sql); + $lexerErrors = $this->getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(0, $parserErrors); + + // phpcs:disable Generic.Files.LineLength.TooLong + $expected = <<<'SQL' +WITH categories AS (SELECT * FROM (SELECT * FROM foo)) SELECT * FROM categories +SQL; + // phpcs:enable + $this->assertEquals($expected, $parser->statements[0]->build()); + } + + public function testWithHasUnclosedParenthesis(): void + { + $sql = <<<'SQL' +WITH categories(identifier, name, parent_id) AS ( + SELECT * FROM (SELECT * FROM foo +) +SELECT * FROM categories +SQL; + + $lexer = new Lexer($sql); + + $lexerErrors = $this->getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertEquals('A closing bracket was expected.', $parserErrors[0][0]); + } + + public function testBuildBadWithKeyword(): void + { + $this->expectExceptionMessage('No statement inside WITH'); + (new WithKeyword('test'))->build(); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php index 71febabb1..2611bd21c 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,35 +1,48 @@ > + * @psalm-return ( + * $obj is Lexer + * ? list + * : list + * ) */ - public function getErrorsAsArray($obj) + public function getErrorsAsArray(Lexer|Parser $obj): array { $ret = []; - foreach ($obj->errors as $err) { - $ret[] = $obj instanceof Lexer - ? [ - $err->getMessage(), - $err->ch, - $err->pos, - $err->getCode(), - ] - : [ - $err->getMessage(), - $err->token, - $err->getCode(), - ]; + if ($obj instanceof Lexer) { + /** @var LexerException $err */ + foreach ($obj->errors as $err) { + $ret[] = [$err->getMessage(), $err->ch, $err->pos, $err->getCode()]; + } + } else { + /** @var ParserException $err */ + foreach ($obj->errors as $err) { + $ret[] = [$err->getMessage(), $err->token, $err->getCode()]; + } } return $ret; @@ -69,17 +84,43 @@ public function getErrorsAsArray($obj) * * @param string $name the name of the test * - * @return array + * @return array[]>|null> + * @psalm-return array{ + * query: string, + * lexer: Lexer, + * parser: Parser|null, + * errors: array{lexer: list, parser: list} + * } */ - public function getData($name) + public function getData(string $name): array { - /* - * The unrestricted unserialize() is needed here as we do have - * serialized objects in the tests. There should be no security risk as - * the test data comes with the repository. - */ - $data = unserialize(file_get_contents('tests/data/' . $name . '.out')); + $serializedData = file_get_contents('tests/data/' . $name . '.out'); + $this->assertIsString($serializedData); + + $serializer = new CustomJsonSerializer(null, [ + UtfString::class => new UtfStringSerializer(), + ]); + $data = $serializer->unserialize($serializedData); + + $this->assertIsArray($data); + $this->assertArrayHasKey('query', $data); + $this->assertArrayHasKey('lexer', $data); + $this->assertArrayHasKey('parser', $data); + $this->assertArrayHasKey('errors', $data); + $this->assertIsString($data['query']); + $this->assertInstanceOf(Lexer::class, $data['lexer']); + if ($data['parser'] !== null) { + $this->assertInstanceOf(Parser::class, $data['parser']); + } + + $this->assertIsArray($data['errors']); + $this->assertArrayHasKey('lexer', $data['errors']); + $this->assertArrayHasKey('parser', $data['errors']); + $this->assertIsList($data['errors']['lexer']); + $this->assertIsList($data['errors']['parser']); + $data['query'] = file_get_contents('tests/data/' . $name . '.in'); + $this->assertIsString($data['query']); return $data; } @@ -89,15 +130,25 @@ public function getData($name) * * @param string $name the name of the test */ - public function runParserTest($name) + public function runParserTest(string $name): void { /** * Test's data. - * - * @var array */ $data = $this->getData($name); + if (str_contains($name, '/ansi/')) { + // set mode if appropriate + Context::setMode(Context::SQL_MODE_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); @@ -118,5 +169,8 @@ public function runParserTest($name) // Testing errors. $this->assertEquals($data['errors']['parser'], $parserErrors); $this->assertEquals($data['errors']['lexer'], $lexerErrors); + + // reset mode after test run + Context::setMode(); } } diff --git a/tests/Tools/ContextGeneratorTest.php b/tests/Tools/ContextGeneratorTest.php new file mode 100644 index 000000000..d6d4df266 --- /dev/null +++ b/tests/Tools/ContextGeneratorTest.php @@ -0,0 +1,79 @@ +assertEquals('Invalid00Format00', $name); + + $name = ContextGenerator::formatName('MySql80000'); + $this->assertEquals('MySQL 8.0', $name); + + $name = ContextGenerator::formatName('MariaDb100200'); + $this->assertEquals('MariaDB 10.2', $name); + + $name = ContextGenerator::formatName('MariaDb100000'); + $this->assertEquals('MariaDB 10.0', $name); + + $name = ContextGenerator::formatName('FutureDBMS45784012500'); + $this->assertEquals('FutureDBMS 4.57.84.1.25', $name); + } + + public function testSortWords(): void + { + $wordsArray = ['41' => ['GEOMETRYCOLLECTION', 'DATE'], '35' => ['SCHEMA', 'REPEAT', 'VALUES']]; + ContextGenerator::sortWords($wordsArray); + $this->assertEquals([ + '41' => ['DATE', 'GEOMETRYCOLLECTION'], + '35' => ['REPEAT', 'SCHEMA', 'VALUES'], + ], $wordsArray); + } + + public function testReadWords(): void + { + $testFiles = [getcwd() . '/tests/Tools/contexts/testContext.txt']; + $readWords = ContextGenerator::readWords($testFiles); + $this->assertEquals([ + Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED => [ + 'RESERVED', + 'RESERVED2', + 'RESERVED3', + 'RESERVED4', + 'RESERVED5', + ], + Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION => ['FUNCTION'], + Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE => ['DATATYPE'], + Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_KEY => ['KEYWORD'], + Token::FLAG_KEYWORD => ['NO_FLAG'], + Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED => ['COMPOSED KEYWORD'], + ], $readWords); + } + + public function testGenerate(): void + { + $testFiles = [getcwd() . '/tests/Tools/contexts/testContext.txt']; + $readWords = ContextGenerator::readWords($testFiles); + ContextGenerator::printWords($readWords); + $options = [ + 'keywords' => $readWords, + 'name' => 'MYSQL TEST', + 'class' => 'TestContext', + 'link' => 'https://www.phpmyadmin.net/contribute', + ]; + $generatedTemplate = ContextGenerator::generate($options); + $expectedTemplate = file_get_contents(getcwd() . '/tests/Tools/templates/TestContext.php'); + $this->assertEquals($expectedTemplate, $generatedTemplate); + } +} diff --git a/tests/Tools/contexts/testContext.txt b/tests/Tools/contexts/testContext.txt new file mode 100644 index 000000000..e7b107b80 --- /dev/null +++ b/tests/Tools/contexts/testContext.txt @@ -0,0 +1,16 @@ +RESERVED (R) + RESERVED2 (R) + RESERVED3 (R) + RESERVED4 (R) +reserved5 (R) + +FUNCTION (F) +DATATYPE (D) +KEYWORD (K) + + + +NO_FLAG +COMPOSED KEYWORD + +FUNCTION diff --git a/tests/Tools/templates/TestContext.php b/tests/Tools/templates/TestContext.php new file mode 100644 index 000000000..d89522c1d --- /dev/null +++ b/tests/Tools/templates/TestContext.php @@ -0,0 +1,41 @@ + + * @phpstan-var non-empty-array + */ + public const KEYWORDS = [ + 'NO_FLAG' => Token::FLAG_KEYWORD, + 'RESERVED' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESERVED2' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESERVED3' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESERVED4' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'RESERVED5' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED, + 'COMPOSED KEYWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + 'DATATYPE' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_DATA_TYPE, + 'KEYWORD' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_KEY, + 'FUNCTION' => Token::FLAG_KEYWORD | Token::FLAG_KEYWORD_FUNCTION, + ]; +} diff --git a/tests/UtfStringSerializer.php b/tests/UtfStringSerializer.php new file mode 100644 index 000000000..f0e7b6503 --- /dev/null +++ b/tests/UtfStringSerializer.php @@ -0,0 +1,28 @@ + + * @psalm-return array{str: string} + */ + public function serialize(UtfString $str): array + { + return ['str' => (string) $str]; + } + + /** + * @param array $data + * @psalm-param array{str: string} $data + */ + public function unserialize(array $data): UtfString + { + return new UtfString($data['str']); + } +} diff --git a/tests/Utils/BufferedQueryTest.php b/tests/Utils/BufferedQueryTest.php index f7d5705a6..36f297dd8 100644 --- a/tests/Utils/BufferedQueryTest.php +++ b/tests/Utils/BufferedQueryTest.php @@ -1,46 +1,51 @@ $options + * @param string[] $expected + * @psalm-param array{delimiter?: non-empty-string, parse_delimiter?: bool, add_delimiter?: bool} $options + * @psalm-param positive-int $chunkSize */ + #[DataProvider('extractProvider')] public function testExtract( - $query, - $chunkSize, + string $query, + int $chunkSize, array $options, - array $expected - ) { + array $expected, + ): void { $chunks = str_split($query, $chunkSize); $count = count($chunks); /** * The array of extracted statements. - * - * @var array */ $statements = []; /** * The `BufferedQuery` instance used for extraction. - * - * @var BufferedQuery */ $bq = new BufferedQuery('', $options); // Feeding chunks and extracting queries. $i = 0; while ($i < $count) { - if ($stmt = $bq->extract()) { + $stmt = $bq->extract(); + + if (is_string($stmt) && $stmt !== '') { $statements[] = $stmt; } else { $bq->query .= $chunks[$i++]; @@ -55,7 +60,11 @@ public function testExtract( $this->assertEquals($expected, $statements); } - public function extractProvider() + /** + * @return array> + * @psalm-return list + */ + public static function extractProvider(): array { $query = '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;' . "\n" . @@ -69,7 +78,8 @@ public function extractProvider() '/* 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" . + '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" . @@ -114,6 +124,16 @@ public function extractProvider() ], ], + [ + 'SELECT \\', + 8, + [ + 'parse_delimiter' => false, + 'add_delimiter' => false, + ], + ['SELECT \\'], + ], + [ "CREATE TABLE `test` (\n" . " `txt` varchar(10)\n" . @@ -187,7 +207,8 @@ public function extractProvider() '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" . + '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" . @@ -243,7 +264,8 @@ public function extractProvider() '/* 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" . + '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" . @@ -299,7 +321,8 @@ public function extractProvider() '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" . + '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" . diff --git a/tests/Utils/CLITest.php b/tests/Utils/CLITest.php index ec69ad960..124dc28f6 100644 --- a/tests/Utils/CLITest.php +++ b/tests/Utils/CLITest.php @@ -1,16 +1,35 @@ |false $getopt */ + private function getCLI(array|false $getopt): CLI + { + $cli = $this->createPartialMock(CLI::class, ['getopt']); + $cli->method('getopt')->willReturn($getopt); + + return $cli; + } + + /** @param array|false $getopt */ + private function getCLIStdIn(string $input, array|false $getopt): CLI { - $cli = $this->getMockBuilder('PhpMyAdmin\SqlParser\Utils\CLI')->setMethods(['getopt'])->getMock(); + $cli = $this->createPartialMock(CLI::class, ['getopt', 'readStdin']); $cli->method('getopt')->willReturn($getopt); + $cli->method('readStdin')->willReturn($input); return $cli; } @@ -20,30 +39,29 @@ private function getCLI($getopt) * * We do mock it for other tests to return values we want. */ - public function testGetopt() + public function testGetopt(): void { - $cli = new \PhpMyAdmin\SqlParser\Utils\CLI(); + $cli = new CLI(); $this->assertEquals( + [], $cli->getopt('', []), - [] ); } - /** - * @dataProvider highlightParams - * - * @param mixed $getopt - * @param mixed $output - * @param mixed $result - */ - public function testRunHighlight($getopt, $output, $result) + /** @param array|false $getopt */ + #[DataProvider('highlightParamsProvider')] + public function testRunHighlight(array|false $getopt, string $output, int $result): void { $cli = $this->getCLI($getopt); $this->expectOutputString($output); $this->assertEquals($result, $cli->runHighlight()); } - public function highlightParams() + /** + * @return array|false>> + * @psalm-return list|false), string, int}> + */ + public static function highlightParamsProvider(): array { return [ [ @@ -77,21 +95,21 @@ public function highlightParams() 'q' => 'SELECT 1', 'f' => 'html', ], - 'SELECT' . '
' . + 'SELECT
' . '    1' . "\n", 0, ], [ ['h' => true], - 'Usage: highlight-query --query SQL [--format html|cli|text]' . "\n" . - ' cat file.sql | highlight-query' . "\n", + 'Usage: sql-parser --highlight --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | sql-parser --highlight' . "\n", 0, ], [ [], 'ERROR: Missing parameters!' . "\n" . - 'Usage: highlight-query --query SQL [--format html|cli|text]' . "\n" . - ' cat file.sql | highlight-query' . "\n", + 'Usage: sql-parser --highlight --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | sql-parser --highlight' . "\n", 1, ], [ @@ -102,21 +120,147 @@ public function highlightParams() ]; } + /** @param array|false $getopt */ + #[DataProvider('highlightParamsStdInProvider')] + public function testRunHighlightStdIn(string $input, array|false $getopt, string $output, int $result): void + { + $cli = $this->getCLIStdIn($input, $getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runHighlight()); + } + /** - * @dataProvider lintParams - * - * @param mixed $getopt - * @param mixed $output - * @param mixed $result + * @return array|false>> + * @psalm-return list|false), string, int}> + */ + public static 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: sql-parser --highlight --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | sql-parser --highlight' . "\n", + 0, + ], + [ + '', + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: sql-parser --highlight --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | sql-parser --highlight' . "\n", + 1, + ], + [ + '', + false, + '', + 1, + ], + ]; + } + + /** @param array|false $getopt */ + #[DataProvider('lintParamsStdInProvider')] + public function testRunLintFromStdIn(string $input, array|false $getopt, string $output, int $result): void + { + $cli = $this->getCLIStdIn($input, $getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runLint()); + } + + /** + * @return array|false>> + * @psalm-return list|false), string, int}> */ - public function testRunLint($getopt, $output, $result) + public static 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: sql-parser --lint --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --lint' . "\n", + 1, + ], + [ + '', + ['h' => true], + 'Usage: sql-parser --lint --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --lint' . "\n", + 0, + ], + [ + '', + false, + '', + 1, + ], + ]; + } + + /** @param array|false $getopt */ + #[DataProvider('lintParamsProvider')] + public function testRunLint(array|false $getopt, string $output, int $result): void { $cli = $this->getCLI($getopt); $this->expectOutputString($output); $this->assertEquals($result, $cli->runLint()); } - public function lintParams() + /** + * @return array|false>> + * @psalm-return list|false), string, int}> + */ + public static function lintParamsProvider(): array { return [ [ @@ -136,17 +280,27 @@ public function lintParams() '#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' . "\n" . - ' cat file.sql | lint-query' . "\n", + 'Usage: sql-parser --lint --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --lint' . "\n", 0, ], [ [], 'ERROR: Missing parameters!' . "\n" . - 'Usage: lint-query --query SQL' . "\n" . - ' cat file.sql | lint-query' . "\n", + 'Usage: sql-parser --lint --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --lint' . "\n", 1, ], [ @@ -157,28 +311,25 @@ public function lintParams() ]; } - /** - * @dataProvider tokenizeParams - * - * @param mixed $getopt - * @param mixed $output - * @param mixed $result - */ - public function testRunTokenize($getopt, $output, $result) + /** @param array|false $getopt */ + #[DataProvider('tokenizeParamsProvider')] + public function testRunTokenize(array|false $getopt, string $output, int $result): void { $cli = $this->getCLI($getopt); $this->expectOutputString($output); $this->assertEquals($result, $cli->runTokenize()); } - public function tokenizeParams() + /** + * @return array|false>> + * @psalm-return list|false), string, int}> + */ + public static function tokenizeParamsProvider(): array { - $result = ( - "[TOKEN 0]\nType = 1\nFlags = 3\nValue = 'SELECT'\nToken = 'SELECT'\n\n" + $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" - ); + . "[TOKEN 3]\nType = 9\nFlags = 0\nValue = ''\nToken = ''\n\n"; return [ [ @@ -193,15 +344,15 @@ public function tokenizeParams() ], [ ['h' => true], - 'Usage: tokenize-query --query SQL' . "\n" . - ' cat file.sql | tokenize-query' . "\n", + 'Usage: sql-parser --tokenize --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --tokenize' . "\n", 0, ], [ [], 'ERROR: Missing parameters!' . "\n" . - 'Usage: tokenize-query --query SQL' . "\n" . - ' cat file.sql | tokenize-query' . "\n", + 'Usage: sql-parser --tokenize --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --tokenize' . "\n", 1, ], [ @@ -212,45 +363,95 @@ public function tokenizeParams() ]; } + /** @param array|false $getopt */ + #[DataProvider('tokenizeParamsStdInProvider')] + public function testRunTokenizeStdIn(string $input, array|false $getopt, string $output, int $result): void + { + $cli = $this->getCLIStdIn($input, $getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runTokenize()); + } + /** - * @dataProvider stdinParams - * - * @param string $cmd - * @param int $result + * @return array|false>> + * @psalm-return list|false), string, int}> */ - public function testStdinPipe($cmd, $result) + public static 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 = ''\nToken = ''\n\n"; + + return [ + [ + 'SELECT 1', + [], + $result, + 0, + ], + [ + '', + ['h' => true], + 'Usage: sql-parser --tokenize --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --tokenize' . "\n", + 0, + ], + [ + '', + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: sql-parser --tokenize --query SQL [--ansi]' . "\n" . + ' cat file.sql | sql-parser --tokenize' . "\n", + 1, + ], + [ + '', + false, + '', + 1, + ], + ]; + } + + #[DataProvider('stdinParamsProvider')] + public function testStdinPipe(string $cmd, int $result): void { exec($cmd, $out, $ret); $this->assertSame($result, $ret); } - public function stdinParams() + /** + * @return array> + * @psalm-return list + */ + public static function stdinParamsProvider(): array { $binPath = PHP_BINARY . ' ' . dirname(__DIR__, 2) . '/bin/'; return [ [ - 'echo "SELECT 1" | ' . $binPath . 'highlight-query', + 'echo "SELECT 1" | ' . $binPath . 'sql-parser --highlight', 0, ], [ - 'echo "invalid query" | ' . $binPath . 'highlight-query', + 'echo "invalid query" | ' . $binPath . 'sql-parser --highlight', 0, ], [ - 'echo "SELECT 1" | ' . $binPath . 'lint-query', + 'echo "SELECT 1" | ' . $binPath . 'sql-parser --lint', 0, ], [ - 'echo "invalid query" | ' . $binPath . 'lint-query', + 'echo "invalid query" | ' . $binPath . 'sql-parser --lint', 10, ], [ - 'echo "SELECT 1" | ' . $binPath . 'tokenize-query', + 'echo "SELECT 1" | ' . $binPath . 'sql-parser --tokenize', 0, ], [ - 'echo "invalid query" | ' . $binPath . 'tokenize-query', + 'echo "invalid query" | ' . $binPath . 'sql-parser --tokenize', 0, ], ]; diff --git a/tests/Utils/ErrorTest.php b/tests/Utils/ErrorTest.php index 7e1326f52..da9e7be3a 100644 --- a/tests/Utils/ErrorTest.php +++ b/tests/Utils/ErrorTest.php @@ -1,4 +1,5 @@ list); $this->assertEquals( [ [ 'Unexpected character.', 0, - '$', + '}', 22, ], [ @@ -29,15 +30,36 @@ public function testGet() 17, ], ], - Error::get([$lexer, $parser]) + Error::get([$lexer, $parser]), + ); + } + + public function testGetWithNullToken(): void + { + $lexer = new Lexer('LOCK TABLES table1 AS `t1` LOCAL'); + $parser = new Parser($lexer->list); + $this->assertSame( + [ + ['An alias was previously found.', 0, 'LOCAL', 27], + ['Unexpected keyword.', 0, 'LOCAL', 27], + ['Unexpected end of LOCK expression.', 0, '', null], + ], + Error::get([$lexer, $parser]), ); } - public function testFormat() + public function testFormat(): void { $this->assertEquals( ['#1: error msg (near "token" at position 100)'], - Error::format([['error msg', 42, 'token', 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/tests/Utils/FormatterTest.php b/tests/Utils/FormatterTest.php index 08b73772b..557676fa0 100644 --- a/tests/Utils/FormatterTest.php +++ b/tests/Utils/FormatterTest.php @@ -1,26 +1,28 @@ > $default + * @param array> $overriding + * @param array> $expected + * @psalm-param list $default + * @psalm-param list $overriding + * @psalm-param list $expected */ - public function testMergeFormats($default, $overriding, $expected) + #[DataProvider('mergeFormatsProvider')] + public function testMergeFormats(array $default, array $overriding, array $expected): void { - $formatter = $this->getMockBuilder('PhpMyAdmin\SqlParser\Utils\Formatter') - ->disableOriginalConstructor() - ->setMethods(['getDefaultOptions', 'getDefaultFormats']) - ->getMock(); + $formatter = $this->createPartialMock(Formatter::class, ['getDefaultOptions', 'getDefaultFormats']); $formatter->expects($this->once()) ->method('getDefaultOptions') @@ -51,14 +53,21 @@ public function testMergeFormats($default, $overriding, $expected) 'formats' => $overriding, ]; - $reflectionMethod = new \ReflectionMethod($formatter, 'getMergedOptions'); - $reflectionMethod->setAccessible(true); + $reflectionMethod = new ReflectionMethod($formatter, 'getMergedOptions'); $this->assertEquals($expectedOptions, $reflectionMethod->invoke($formatter, $overridingOptions)); } - public function mergeFormats() + /** + * @return array>>> + * @psalm-return array, + * overriding: list, + * expected: list + * }> + */ + public static function mergeFormatsProvider(): array { - // array($default[], $overriding[], $expected[]) + // [default[], overriding[], expected[]] return [ 'empty formats' => [ 'default' => [ @@ -233,27 +242,43 @@ public function mergeFormats() ]; } - /** - * @dataProvider formatQueries - * - * @param mixed $query - * @param mixed $text - * @param mixed $cli - * @param mixed $html - */ - public function testFormat($query, $text, $cli, $html, array $options = []) + /** @param array $options */ + #[DataProvider('formatQueriesProviders')] + public function testFormat(string $query, string $text, string $cli, string $html, array $options = []): void { // Test TEXT format - $this->assertEquals($text, Formatter::format($query, ['type' => 'text'] + $options), 'Text formatting failed.'); + $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.'); + $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.'); + $this->assertEquals( + $html, + Formatter::format($query, ['type' => 'html'] + $options), + 'HTML formatting failed.', + ); } - public function formatQueries() + /** + * @return array>> + * @psalm-return array + * }> + */ + public static function formatQueriesProviders(): array { return [ 'empty' => [ @@ -266,9 +291,9 @@ public function formatQueries() 'query' => 'select 1', 'text' => 'SELECT' . "\n" . ' 1', - 'cli' => "\x1b[35mSELECT" . "\n" . - " \x1b[92m1" . "\x1b[0m", - 'html' => 'SELECT' . '
' . + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[92m1\x1b[0m", + 'html' => 'SELECT
' . '    1', ], 'simply' => [ @@ -279,21 +304,22 @@ public function formatQueries() ' 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' . '
' . + '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', + '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" . @@ -307,32 +333,36 @@ public function formatQueries() ' 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', + '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" . @@ -344,18 +374,19 @@ public function formatQueries() ' tbl # Comment' . "\n" . 'WHERE' . "\n" . ' 1 -- Comment', - 'cli' => "\x1b[35mSELECT" . "\n" . - " \x1b[37m/* Comment */ \x1b[39m*" . "\n" . - "\x1b[35mFROM" . "\n" . - " \x1b[39mtbl \x1b[37m# Comment" . "\n" . - "\x1b[35mWHERE" . "\n" . - " \x1b[92m1 \x1b[37m-- Comment" . "\x1b[0m", - 'html' => 'SELECT' . '
' . - '    /* Comment */ *' . '
' . - 'FROM' . '
' . - '    tbl # Comment' . '
' . - 'WHERE' . '
' . - '    1 -- Comment', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[37m/* Comment */ \x1b[39m*\n" . + "\x1b[35mFROM\n" . + " \x1b[39mtbl \x1b[37m# Comment\n" . + "\x1b[35mWHERE\n" . + " \x1b[92m1 \x1b[37m-- Comment\x1b[0m", + 'html' => 'SELECT
' . + '    /* Comment */ *
' . + 'FROM
' . + '    tbl # Comment
' . + 'WHERE
' . + '    1 ' . + '-- Comment', ], 'strip comments' => [ 'query' => 'select /* Comment */ *' . "\n" . @@ -367,38 +398,36 @@ public function formatQueries() ' 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' . '
' . + '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, - ], + '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' . '
' . + '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' . '
' . + 'cli' => "\x1b[35mSELECT DISTINCT\n" . + " \x1b[95mCOUNT\x1b[39m(*)\x1b[0m", + 'html' => 'SELECT DISTINCT
' . '    COUNT(*)', ], 'create procedure' => [ @@ -411,45 +440,51 @@ public function formatQueries() ' *;' . "\n" . 'END', 'cli' => "\x1b[35mCREATE PROCEDURE \x1b[39mtest_procedure()\n" . - "\x1b[95mBEGIN" . "\n" . - " \x1b[35mFROM" . "\n" . - " \x1b[39mtbl" . "\n" . - " \x1b[35mSELECT" . "\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' . '
' . - '        *;' . '
' . + "\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)', + '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', + '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' . '
' . + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[91m'text\\x1B[33mcolor-inj'\x1b[0m", + 'html' => 'SELECT
' . '    \'text' . "\x1b[33m" . 'color-inj\'', ], 'escape html' => [ @@ -459,15 +494,16 @@ public function formatQueries() 'FROM' . "\n" . ' `xss`,' . "\n" . ' < s > nxss /*sxss*/', - 'cli' => "\x1b[35mSELECT" . "\n" . - " \x1b[91m'xss'" . "\n" . - "\x1b[35mFROM" . "\n" . - " \x1b[36m`xss`\x1b[39m," . "\n" . - " < s > nxss \x1b[37m/*sxss*/" . "\x1b[0m", - 'html' => 'SELECT' . '
' . - '    \'<s>xss\'' . '
' . - 'FROM' . '
' . - '    `<s>xss`,
    < s > nxss /*s<s>xss*/', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[91m'xss'\n" . + "\x1b[35mFROM\n" . + " \x1b[36m`xss`\x1b[39m,\n" . + " < s > nxss \x1b[37m/*sxss*/\x1b[0m", + 'html' => 'SELECT
' . + '    \'<s>xss\'
' . + 'FROM
' . + '    `<s>xss`,' . + '
    < s > nxss /*s<s>xss*/', ], 'create table' => [ 'query' => 'create table if not exists `pma__bookmark` (' . "\n" . @@ -484,20 +520,40 @@ public function formatQueries() ' `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`)', + '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', @@ -514,17 +570,17 @@ public function formatQueries() ' 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' . '
' . + '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' => [ @@ -535,17 +591,17 @@ public function formatQueries() ' 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' . '
' . + '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/tests/Utils/MiscTest.php b/tests/Utils/MiscTest.php deleted file mode 100644 index dbd200e94..000000000 --- a/tests/Utils/MiscTest.php +++ /dev/null @@ -1,128 +0,0 @@ -statements[0]) ? - null : $parser->statements[0]; - $this->assertEquals($expected, Misc::getAliases($statement, $db)); - } - - public function getAliasesProvider() - { - 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/tests/Utils/QueryTest.php b/tests/Utils/QueryTest.php index 5c0cc5510..c023cdd9b 100644 --- a/tests/Utils/QueryTest.php +++ b/tests/Utils/QueryTest.php @@ -1,4 +1,5 @@ >, bool|StatementType|null> $expected */ - public function testGetFlags($query, $expected) + #[DataProvider('getFlagsProvider')] + public function testGetFlags(string $query, array $expected): void { $parser = new Parser($query); - $this->assertEquals( - $expected, - Query::getFlags($parser->statements[0]) - ); + $flags = new StatementFlags(); + foreach ($expected as $property => $expectedValue) { + $flags->$property = $expectedValue; + } + + $this->assertEquals($flags, Query::getFlags($parser->statements[0])); } - public function getFlagsProvider() + /** @psalm-return list>, bool|StatementType|null>}> */ + public static function getFlagsProvider(): array { return [ [ 'ALTER TABLE DROP col', [ 'reload' => true, - 'querytype' => 'ALTER', + 'queryType' => StatementType::Alter, ], ], [ 'CALL test()', [ - 'is_procedure' => true, - 'querytype' => 'CALL', + 'isProcedure' => true, + 'queryType' => StatementType::Call, ], ], [ 'CREATE TABLE tbl (id INT)', [ 'reload' => true, - 'querytype' => 'CREATE', + 'queryType' => StatementType::Create, ], ], [ 'CHECK TABLE tbl', [ - 'is_maint' => true, - 'querytype' => 'CHECK', + 'isMaint' => true, + 'queryType' => StatementType::Check, ], ], [ 'DELETE FROM tbl', [ - 'is_affected' => true, - 'is_delete' => true, - 'querytype' => 'DELETE', + 'isAffected' => true, + 'isDelete' => true, + 'queryType' => StatementType::Delete, ], ], [ 'DROP VIEW v', [ 'reload' => true, - 'querytype' => 'DROP', + 'queryType' => StatementType::Drop, ], ], [ 'DROP DATABASE db', [ - 'drop_database' => true, + 'dropDatabase' => true, 'reload' => true, - 'querytype' => 'DROP', + 'queryType' => StatementType::Drop, ], ], [ 'EXPLAIN tbl', [ - 'is_explain' => true, - 'querytype' => 'EXPLAIN', + 'isExplain' => true, + 'queryType' => StatementType::Explain, ], ], [ 'LOAD DATA INFILE \'/tmp/test.txt\' INTO TABLE test', [ - 'is_affected' => true, - 'is_insert' => true, - 'querytype' => 'LOAD', + 'isAffected' => true, + 'isInsert' => true, + 'queryType' => StatementType::Load, ], ], [ 'INSERT INTO tbl VALUES (1)', [ - 'is_affected' => true, - 'is_insert' => true, - 'querytype' => 'INSERT', + 'isAffected' => true, + 'isInsert' => true, + 'queryType' => StatementType::Insert, ], ], [ 'REPLACE INTO tbl VALUES (2)', [ - 'is_affected' => true, - 'is_replace' => true, - 'is_insert' => true, - 'querytype' => 'REPLACE', + 'isAffected' => true, + 'isReplace' => true, + 'isInsert' => true, + 'queryType' => StatementType::Replace, ], ], [ 'SELECT 1', [ - 'is_select' => true, - 'querytype' => 'SELECT', + 'isSelect' => true, + 'queryType' => StatementType::Select, ], ], [ 'SELECT * FROM tbl', [ - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT', + 'isSelect' => true, + 'selectFrom' => true, + 'queryType' => StatementType::Select, ], ], [ 'SELECT DISTINCT * FROM tbl LIMIT 0, 10 ORDER BY id', [ 'distinct' => true, - 'is_select' => true, - 'select_from' => true, + 'isSelect' => true, + 'selectFrom' => true, 'limit' => true, 'order' => true, - 'querytype' => 'SELECT', + 'queryType' => StatementType::Select, ], ], [ 'SELECT * FROM actor GROUP BY actor_id', [ - 'is_group' => true, - 'is_select' => true, - 'select_from' => true, + 'isGroup' => true, + 'isSelect' => true, + 'selectFrom' => true, 'group' => true, - 'querytype' => 'SELECT', + 'queryType' => StatementType::Select, ], ], [ 'SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);', [ - 'is_analyse' => true, - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT', + 'isAnalyse' => true, + 'isSelect' => true, + 'selectFrom' => true, + 'queryType' => StatementType::Select, ], ], [ 'SELECT * FROM tbl INTO OUTFILE "/tmp/export.txt"', [ - 'is_export' => true, - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT', + 'isExport' => true, + 'isSelect' => true, + 'selectFrom' => true, + 'queryType' => StatementType::Select, ], ], [ 'SELECT COUNT(id), SUM(id) FROM tbl', [ - 'is_count' => true, - 'is_func' => true, - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT', + 'isCount' => true, + 'isFunc' => true, + 'isSelect' => true, + 'selectFrom' => true, + 'queryType' => StatementType::Select, + ], + ], + [ + 'SELECT count(*) FROM tbl', + [ + 'isCount' => true, + 'isSelect' => true, + 'selectFrom' => true, + 'queryType' => StatementType::Select, + ], + ], + [ + 'SELECT sum(*) FROM tbl', + [ + 'isFunc' => true, + 'isSelect' => true, + 'selectFrom' => true, + 'queryType' => StatementType::Select, ], ], [ 'SELECT (SELECT "foo")', [ - 'is_select' => true, - 'is_subquery' => true, - 'querytype' => 'SELECT', + 'isSelect' => true, + 'isSubQuery' => true, + 'queryType' => StatementType::Select, ], ], [ 'SELECT * FROM customer HAVING store_id = 2;', [ - 'is_select' => true, - 'select_from' => true, - 'is_group' => true, + 'isSelect' => true, + 'selectFrom' => true, + 'isGroup' => true, 'having' => true, - 'querytype' => 'SELECT', + 'queryType' => StatementType::Select, ], ], [ 'SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id;', [ - 'is_select' => true, - 'select_from' => true, + 'isSelect' => true, + 'selectFrom' => true, 'join' => true, - 'querytype' => 'SELECT', + 'queryType' => StatementType::Select, ], ], [ 'SHOW CREATE TABLE tbl', [ - 'is_show' => true, - 'querytype' => 'SHOW', + 'isShow' => true, + 'queryType' => StatementType::Show, ], ], [ 'UPDATE tbl SET id = 1', [ - 'is_affected' => true, - 'querytype' => 'UPDATE', + 'isAffected' => true, + 'queryType' => StatementType::Update, ], ], [ 'ANALYZE TABLE tbl', [ - 'is_maint' => true, - 'querytype' => 'ANALYZE', + 'isMaint' => true, + 'queryType' => StatementType::Analyze, ], ], [ 'CHECKSUM TABLE tbl', [ - 'is_maint' => true, - 'querytype' => 'CHECKSUM', + 'isMaint' => true, + 'queryType' => StatementType::Checksum, ], ], [ 'OPTIMIZE TABLE tbl', [ - 'is_maint' => true, - 'querytype' => 'OPTIMIZE', + 'isMaint' => true, + 'queryType' => StatementType::Optimize, ], ], [ 'REPAIR TABLE tbl', [ - 'is_maint' => true, - 'querytype' => 'REPAIR', + 'isMaint' => true, + 'queryType' => StatementType::Repair, ], ], [ @@ -248,183 +272,155 @@ public function getFlagsProvider() 'UNION ' . '(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);', [ - 'is_select' => true, - 'select_from' => true, + 'isSelect' => true, + 'selectFrom' => true, 'limit' => true, 'order' => true, 'union' => true, - 'querytype' => 'SELECT', + 'queryType' => StatementType::Select, ], ], [ 'SELECT * FROM orders AS ord WHERE 1', [ - 'querytype' => 'SELECT', - 'is_select' => true, - 'select_from' => true, + 'queryType' => StatementType::Select, + 'isSelect' => true, + 'selectFrom' => true, ], ], [ 'SET NAMES \'latin\'', - [ - 'querytype' => 'SET', - ], + ['queryType' => StatementType::Set], ], ]; } - public function testGetAll() + public function testGetFlagsWithEmptyString(): 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('') - ); + $statementInfo = Query::getAll(''); + self::assertEquals(new Parser(''), $statementInfo->parser); + self::assertNull($statementInfo->statement); + self::assertSame([], $statementInfo->selectTables); + self::assertSame([], $statementInfo->selectExpressions); + $flags = $statementInfo->flags; + self::assertFalse($flags->distinct); + self::assertFalse($flags->dropDatabase); + self::assertFalse($flags->group); + self::assertFalse($flags->having); + self::assertFalse($flags->isAffected); + self::assertFalse($flags->isAnalyse); + self::assertFalse($flags->isCount); + /** @psalm-suppress DeprecatedProperty */ + self::assertFalse($flags->isDelete); + /** @psalm-suppress DeprecatedProperty */ + self::assertFalse($flags->isExplain); + self::assertFalse($flags->isExport); + self::assertFalse($flags->isFunc); + self::assertFalse($flags->isGroup); + self::assertFalse($flags->isInsert); + self::assertFalse($flags->isMaint); + self::assertFalse($flags->isProcedure); + /** @psalm-suppress DeprecatedProperty */ + self::assertFalse($flags->isReplace); + /** @psalm-suppress DeprecatedProperty */ + self::assertFalse($flags->isSelect); + /** @psalm-suppress DeprecatedProperty */ + self::assertFalse($flags->isShow); + self::assertFalse($flags->isSubQuery); + self::assertFalse($flags->join); + self::assertFalse($flags->limit); + self::assertFalse($flags->offset); + self::assertFalse($flags->order); + self::assertNull($flags->queryType); + self::assertFalse($flags->reload); + self::assertFalse($flags->selectFrom); + self::assertFalse($flags->union); + } - $query = 'SELECT *, actor.actor_id, sakila2.film.* - FROM sakila2.city, sakila2.film, actor'; + public function testGetAll(): void + { + $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) - ); + $statementInfo = Query::getAll($query); + self::assertEquals($parser, $statementInfo->parser); + self::assertEquals($parser->statements[0], $statementInfo->statement); + self::assertEquals(Query::getFlags($parser->statements[0]), $statementInfo->flags); + self::assertSame([['actor', null], ['film', 'sakila2']], $statementInfo->selectTables); + self::assertSame(['*'], $statementInfo->selectExpressions); $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) - ); + $statementInfo = Query::getAll($query); + self::assertEquals($parser, $statementInfo->parser); + self::assertEquals($parser->statements[0], $statementInfo->statement); + self::assertEquals(Query::getFlags($parser->statements[0]), $statementInfo->flags); + self::assertSame([['actor', 'sakila'], ['film', null]], $statementInfo->selectTables); + self::assertSame(['*'], $statementInfo->selectExpressions); $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) - ); + $statementInfo = Query::getAll($query); + self::assertEquals($parser, $statementInfo->parser); + self::assertEquals($parser->statements[0], $statementInfo->statement); + self::assertEquals(Query::getFlags($parser->statements[0]), $statementInfo->flags); + self::assertSame([['actor', 'sakila']], $statementInfo->selectTables); + self::assertSame([], $statementInfo->selectExpressions); $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) + $statementInfo = Query::getAll($query); + self::assertEquals($parser, $statementInfo->parser); + self::assertEquals($parser->statements[0], $statementInfo->statement); + self::assertEquals(Query::getFlags($parser->statements[0]), $statementInfo->flags); + self::assertSame([], $statementInfo->selectTables); + self::assertSame( + ['CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END'], + $statementInfo->selectExpressions, ); } - /** - * @dataProvider getTablesProvider - * - * @param mixed $query - * @param mixed $expected - */ - public function testGetTables($query, $expected) + /** @param string[] $expected */ + #[DataProvider('getTablesProvider')] + public function testGetTables(string $query, array $expected): void { $parser = new Parser($query); $this->assertEquals( $expected, - Query::getTables($parser->statements[0]) + Query::getTables($parser->statements[0]), ); } - public function getTablesProvider() + /** + * @return array> + * @psalm-return list + */ + public static 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`'], @@ -450,7 +446,7 @@ public function getTablesProvider() ]; } - public function testGetClause() + public function testGetClause(): void { /* Assertion 1 */ $parser = new Parser( @@ -459,16 +455,17 @@ public function testGetClause() 'WHERE city_id < 1 /* test */' . 'ORDER BY city_id ASC ' . 'LIMIT 0, 1 ' . - 'INTO OUTFILE "/dev/null"' + 'INTO OUTFILE "/dev/null"', ); + $this->assertNotNull($parser->list); $this->assertEquals( '0, 1 INTO OUTFILE "/dev/null"', Query::getClause( $parser->statements[0], $parser->list, 'LIMIT', - 0 - ) + 0, + ), ); // Assert it returns all clauses between FROM and LIMIT $this->assertEquals( @@ -477,8 +474,8 @@ public function testGetClause() $parser->statements[0], $parser->list, 'FROM', - 'LIMIT' - ) + 'LIMIT', + ), ); // Assert it returns all clauses between SELECT and LIMIT $this->assertEquals( @@ -487,8 +484,8 @@ public function testGetClause() $parser->statements[0], $parser->list, 'LIMIT', - 'SELECT' - ) + 'SELECT', + ), ); /* Assertion 2 */ @@ -496,31 +493,32 @@ public function testGetClause() 'DELETE FROM `renewal` ' . 'WHERE number = "1DB" AND actionDate <= CURRENT_DATE() ' . 'ORDER BY id ASC ' . - 'LIMIT 1' + 'LIMIT 1', ); + $this->assertNotNull($parser->list); $this->assertEquals( 'number = "1DB" AND actionDate <= CURRENT_DATE()', Query::getClause( $parser->statements[0], $parser->list, - 'WHERE' - ) + 'WHERE', + ), ); $this->assertEquals( '1', Query::getClause( $parser->statements[0], $parser->list, - 'LIMIT' - ) + 'LIMIT', + ), ); $this->assertEquals( 'id ASC', Query::getClause( $parser->statements[0], $parser->list, - 'ORDER BY' - ) + 'ORDER BY', + ), ); /* Assertion 3 */ @@ -528,82 +526,111 @@ public function testGetClause() 'UPDATE `renewal` SET `some_column` = 1 ' . 'WHERE number = "1DB" AND actionDate <= CURRENT_DATE() ' . 'ORDER BY id ASC ' . - 'LIMIT 1' + 'LIMIT 1', ); + $this->assertNotNull($parser->list); $this->assertEquals( 'number = "1DB" AND actionDate <= CURRENT_DATE()', Query::getClause( $parser->statements[0], $parser->list, - 'WHERE' - ) + 'WHERE', + ), ); $this->assertEquals( '1', Query::getClause( $parser->statements[0], $parser->list, - 'LIMIT' - ) + 'LIMIT', + ), ); $this->assertEquals( 'id ASC', Query::getClause( $parser->statements[0], $parser->list, - 'ORDER BY' - ) + 'ORDER BY', + ), ); } - public function testReplaceClause() + public function testReplaceClause(): void { $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10;'); + $this->assertNotNull($parser->list); $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' - ) + 'WHERE film_id > 0', + ), ); $parser = new Parser( 'select supplier.city, supplier.id from supplier ' - . 'union select customer.city, customer.id from customer' + . 'union select customer.city, customer.id from customer', ); + $this->assertNotNull($parser->list); $this->assertEquals( 'select supplier.city, supplier.id from supplier ' . 'union select customer.city, customer.id from customer' - . ' ORDER BY city ', + . ' ORDER BY city', + Query::replaceClause( + $parser->statements[0], + $parser->list, + 'ORDER BY city', + ), + ); + + $parser = new Parser('SELECT * FROM `t` FOR UPDATE'); + $this->assertEquals( + 'SELECT * FROM `t` LIMIT 0, 25 FOR UPDATE', Query::replaceClause( $parser->statements[0], $parser->list, - 'ORDER BY city' - ) + 'LIMIT 0, 25', + ), ); } - public function testReplaceClauseOnlyKeyword() + public function testReplaceClauseOnlyKeyword(): void { $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10'); + $this->assertNotNull($parser->list); $this->assertEquals( - ' SELECT SQL_CALC_FOUND_ROWS *, (SELECT 1) FROM film LIMIT 0, 10', + '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 - ) + true, + ), ); } - public function testReplaceClauses() + public function testReplaceNonExistingPart(): void { - $this->assertEquals('', Query::replaceClauses(null, null, [])); + $parser = new Parser('ALTER TABLE `sale_mast` OPTIMIZE PARTITION p3'); + $this->assertNotNull($parser->list); + $this->assertEquals( + 'ALTER TABLE `sale_mast` OPTIMIZE PARTITION p3', + Query::replaceClause( + $parser->statements[0], + $parser->list, + 'ORDER BY', + '', + ), + ); + } + public function testReplaceClauses(): void + { $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10;'); + $this->assertNotNull($parser->list); + $this->assertSame('', Query::replaceClauses($parser->statements[0], $parser->list, [])); $this->assertEquals( 'SELECT *, (SELECT 1) FROM film WHERE film_id > 0 LIMIT 0, 10', Query::replaceClauses( @@ -614,8 +641,8 @@ public function testReplaceClauses() 'WHERE', 'WHERE film_id > 0', ], - ] - ) + ], + ), ); $parser = new Parser( @@ -624,14 +651,15 @@ public function testReplaceClauses() 'FROM `city` ' . 'WHERE city_id < 1 ' . 'ORDER BY city_id ASC ' . - 'LIMIT 0, 1 ' + 'LIMIT 0, 1 ', ); + $this->assertNotNull($parser->list); $this->assertEquals( 'SELECT c.city_id, c.country_id ' . 'INTO OUTFILE "/dev/null" ' . - 'FROM city AS c ' . + 'FROM city AS c ' . 'ORDER BY city_id ASC ' . - 'LIMIT 0, 10 ', + 'LIMIT 0, 10', Query::replaceClauses( $parser->statements[0], $parser->list, @@ -648,19 +676,19 @@ public function testReplaceClauses() 'LIMIT', 'LIMIT 0, 10', ], - ] - ) + ], + ), ); } - public function testGetFirstStatement() + public function testGetFirstStatement(): void { $query = 'USE saki'; $delimiter = null; - list($statement, $query, $delimiter) = - Query::getFirstStatement($query, $delimiter); + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); $this->assertNull($statement); $this->assertEquals('USE saki', $query); + $this->assertNull($delimiter); $query = 'USE sakila; ' . '/*test comment*/' . @@ -670,25 +698,22 @@ public function testGetFirstStatement() '/*!SELECT * FROM actor WHERE last_name = "abc"*/$$'; $delimiter = null; - list($statement, $query, $delimiter) = - Query::getFirstStatement($query, $delimiter); + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); $this->assertEquals('USE sakila;', $statement); - list($statement, $query, $delimiter) = - Query::getFirstStatement($query, $delimiter); + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); $this->assertEquals('SELECT * FROM actor;', $statement); - list($statement, $query, $delimiter) = - Query::getFirstStatement($query, $delimiter); + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); $this->assertEquals('DELIMITER $$', $statement); $this->assertEquals('$$', $delimiter); - list($statement, $query, $delimiter) = - Query::getFirstStatement($query, $delimiter); + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); $this->assertEquals('UPDATE actor SET last_name = "abc"$$', $statement); - list($statement, $query, $delimiter) = - Query::getFirstStatement($query, $delimiter); + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); $this->assertEquals('SELECT * FROM actor WHERE last_name = "abc"$$', $statement); + $this->assertSame('', $query); + $this->assertSame('$$', $delimiter); } } diff --git a/tests/Utils/RoutineTest.php b/tests/Utils/RoutineTest.php deleted file mode 100644 index 81a83253a..000000000 --- a/tests/Utils/RoutineTest.php +++ /dev/null @@ -1,311 +0,0 @@ -assertEquals($expected, Routine::getReturnType($def)); - } - - public function getReturnTypeProvider() - { - 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\'', - '', - ], - ], - ]; - } - - /** - * @dataProvider getParameterProvider - * - * @param mixed $def - */ - public function testGetParameter($def, array $expected) - { - $this->assertEquals($expected, Routine::getParameter($def)); - } - - public function getParameterProvider() - { - 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\'', - '', - ], - ], - ]; - } - - /** - * @dataProvider getParametersProvider - * - * @param mixed $query - */ - public function testGetParameters($query, array $expected) - { - $parser = new Parser($query); - $this->assertEquals($expected, Routine::getParameters($parser->statements[0])); - } - - public function getParametersProvider() - { - 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/tests/Utils/TableTest.php b/tests/Utils/TableTest.php index 9d5d3b0e0..c96f55b12 100644 --- a/tests/Utils/TableTest.php +++ b/tests/Utils/TableTest.php @@ -1,26 +1,31 @@ $expected */ + #[DataProvider('getForeignKeysProvider')] + public function testGetForeignKeys(string $query, array $expected): void { $parser = new Parser($query); - $this->assertEquals($expected, Table::getForeignKeys($parser->statements[0])); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); + + $result = $parser->statements[0]->getForeignKeys(); + $this->assertEquals($expected, $result); } - public function getForeignKeysProvider() + /** @return list}> */ + public static function getForeignKeysProvider(): array { return [ [ @@ -40,36 +45,36 @@ public function getForeignKeysProvider() 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 + 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', - ], + new ForeignKey( + constraint: 'fk_payment_customer', + indexList: ['customer_id'], + refTableName: 'customer', + refIndexList: ['customer_id'], + onUpdate: 'CASCADE', + ), + new ForeignKey( + constraint: 'fk_payment_rental', + indexList: ['rental_id'], + refTableName: 'rental', + refIndexList: ['rental_id'], + onDelete: 'SET_NULL', + onUpdate: 'CASCADE', + ), + new ForeignKey( + constraint: 'fk_payment_staff', + indexList: ['staff_id'], + refTableName: 'staff', + refIndexList: ['staff_id'], + onUpdate: 'CASCADE', + ), ], ], [ @@ -98,31 +103,49 @@ public function getForeignKeysProvider() 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', - ], + new ForeignKey( + constraint: 'fk_address_city', + indexList: ['city_id'], + refTableName: 'city', + refIndexList: ['city_id'], + onUpdate: 'CASCADE', + ), ], ], ]; } /** - * @dataProvider getFieldsProvider - * - * @param mixed $query + * @param array> $expected + * @psalm-param array $expected */ - public function testGetFields($query, array $expected) + #[DataProvider('getFieldsProvider')] + public function testGetFields(string $query, array $expected): void { $parser = new Parser($query); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); $this->assertEquals($expected, Table::getFields($parser->statements[0])); } - public function getFieldsProvider() + /** + * @return array>>> + * @psalm-return list}> + */ + public static function getFieldsProvider(): array { return [ [ @@ -202,13 +225,11 @@ public function getFieldsProvider() '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/tests/Utils/TokensTest.php b/tests/Utils/TokensTest.php deleted file mode 100644 index 200dfe6e6..000000000 --- a/tests/Utils/TokensTest.php +++ /dev/null @@ -1,117 +0,0 @@ -assertEquals($expected, Tokens::replaceTokens($list, $find, $replace)); - } - - public function replaceTokensProvider() - { - return [ - [ - 'SELECT * FROM /*x*/a/*c*/.b', - [ - ['value_str' => 'a'], - ['token' => '.'], - ], - [ - new Token('c'), - new Token('.'), - ], - 'SELECT * FROM /*x*/c.b', - ], - ]; - } - - /** - * @dataProvider matchProvider - * - * @param mixed $token - * @param mixed $pattern - * @param mixed $expected - */ - public function testMatch($token, $pattern, $expected) - { - $this->assertEquals($expected, Tokens::match($token, $pattern)); - } - - public function matchProvider() - { - 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/tests/benchmarks/UtfStringBench.php b/tests/benchmarks/UtfStringBench.php new file mode 100644 index 000000000..1c3114e44 --- /dev/null +++ b/tests/benchmarks/UtfStringBench.php @@ -0,0 +1,57 @@ +testContents); + for ($i = 0; $i < $str1->length(); $i++) { + // @phpstan-ignore-next-line + $str1[$i]; // Make offset offsetGet work + } + } + + public function setUp(): void + { + $contentsPath = __DIR__ . '/../../LICENSE.txt'; + $this->testContents = (string) file_get_contents($contentsPath); + } + + /** + * @Iterations(20) + * @Revs(4) + * @OutputTimeUnit("microseconds") + * @Assert("mode(variant.time.avg) < 120 microseconds +/- 10%") + */ + public function benchUtfStringRandomAccessWithUnicode(): void + { + $text = 'abcdefghijklmnopqrstuvwxyz + áéíóúýěřťǔǐǒǎšďȟǰǩľžčǚň + 🦋😄😃😀😊😉😍😘😚😗😂👿😮😨😱😠😡😤😖😆😋👯 + P\xf8\xed\xb9ern\xec \xbelu\xbbou\xe8k\xfd k\xf3d \xfap\xecl \xef\xe1belsk\xe9 k\xf3dy + xℤⅿↈⅬ⅀ↆℜℝ⅗ℾ℧ⅰℓⅯⅵⅣ⅒21⅞'; + + $str1 = new UtfString($text); + $str1->offsetGet(10); + $str1->offsetGet(100); + $str1->offsetGet(20); + $str1->offsetGet(0); + } +} diff --git a/tests/data/bugs/fuzz1.in b/tests/data/bugs/fuzz1.in new file mode 100644 index 000000000..406cde8e3 --- /dev/null +++ b/tests/data/bugs/fuzz1.in @@ -0,0 +1 @@ +ALTER..2 \ No newline at end of file diff --git a/tests/data/bugs/fuzz1.out b/tests/data/bugs/fuzz1.out new file mode 100644 index 000000000..6315b6e83 --- /dev/null +++ b/tests/data/bugs/fuzz1.out @@ -0,0 +1,110 @@ +{ + "query": "ALTER..2", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER..2", + "len": 8, + "last": 8, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".2", + "value": 0.2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 2, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": null, + "altered": [], + "options": null, + "first": 0, + "last": 0 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized alter operation.", + { + "@type": "@2" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/fuzz2.in b/tests/data/bugs/fuzz2.in new file mode 100644 index 000000000..bda1ec626 --- /dev/null +++ b/tests/data/bugs/fuzz2.in @@ -0,0 +1 @@ +WITH]( \ No newline at end of file diff --git a/tests/data/bugs/fuzz2.out b/tests/data/bugs/fuzz2.out new file mode 100644 index 000000000..8d74555e5 --- /dev/null +++ b/tests/data/bugs/fuzz2.out @@ -0,0 +1,127 @@ +{ + "query": "WITH](", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "WITH](", + "len": 6, + "last": 6, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "]", + "value": "]", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": [], + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 0 + } + ], + "brackets": 1 + }, + "errors": { + "lexer": [ + [ + "Unexpected character.", + "]", + 4, + 0 + ] + ], + "parser": [ + [ + "The name of the CTE was expected.", + { + "@type": "@4" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@4" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@4" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/fuzz3.in b/tests/data/bugs/fuzz3.in new file mode 100644 index 000000000..48d31fa9b --- /dev/null +++ b/tests/data/bugs/fuzz3.in @@ -0,0 +1 @@ +WITH*/A( \ No newline at end of file diff --git a/tests/data/bugs/fuzz3.out b/tests/data/bugs/fuzz3.out new file mode 100644 index 000000000..882e7a46a --- /dev/null +++ b/tests/data/bugs/fuzz3.out @@ -0,0 +1,133 @@ +{ + "query": "WITH*/A(", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "WITH*/A(", + "len": 8, + "last": 8, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "A", + "value": "A", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "A": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [], + "statement": null, + "name": "A" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A closing bracket was expected.", + { + "@type": "@10" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/fuzz4.in b/tests/data/bugs/fuzz4.in new file mode 100644 index 000000000..c688c143f --- /dev/null +++ b/tests/data/bugs/fuzz4.in @@ -0,0 +1 @@ +ALTeR=SET \ No newline at end of file diff --git a/tests/data/bugs/fuzz4.out b/tests/data/bugs/fuzz4.out new file mode 100644 index 000000000..b1cd9c2d8 --- /dev/null +++ b/tests/data/bugs/fuzz4.out @@ -0,0 +1,112 @@ +{ + "query": "ALTeR=SET", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTeR=SET", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTeR", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": null, + "altered": [], + "options": null, + "first": 0, + "last": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [], + "first": 1, + "last": 2 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized alter operation.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/fuzz5.in b/tests/data/bugs/fuzz5.in new file mode 100644 index 000000000..61dd39880 --- /dev/null +++ b/tests/data/bugs/fuzz5.in @@ -0,0 +1 @@ ++0xO \ No newline at end of file diff --git a/tests/data/bugs/fuzz5.out b/tests/data/bugs/fuzz5.out new file mode 100644 index 000000000..cd03e8035 --- /dev/null +++ b/tests/data/bugs/fuzz5.out @@ -0,0 +1,88 @@ +{ + "query": "+0xO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "+0xO", + "len": 4, + "last": 4, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 3, + "idx": 3, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+0x", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "O", + "value": "O", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected beginning of statement.", + { + "@type": "@2" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@4" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/fuzz6.in b/tests/data/bugs/fuzz6.in new file mode 100644 index 000000000..f3afa7709 --- /dev/null +++ b/tests/data/bugs/fuzz6.in @@ -0,0 +1 @@ +-+0x! \ No newline at end of file diff --git a/tests/data/bugs/fuzz6.out b/tests/data/bugs/fuzz6.out new file mode 100644 index 000000000..4bb688456 --- /dev/null +++ b/tests/data/bugs/fuzz6.out @@ -0,0 +1,81 @@ +{ + "query": "-+0x!", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-+0x!", + "len": 5, + "last": 5, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 3, + "idx": 3, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-+0x", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 9, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "!", + "value": "!", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected beginning of statement.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh14.out b/tests/data/bugs/gh14.out index 4549d6dce..3fdb252ed 100644 --- a/tests/data/bugs/gh14.out +++ b/tests/data/bugs/gh14.out @@ -1,7 +1,458 @@ -a:4:{s:5:"query";s:113:"ALTER TABLE - `actor` MODIFY `actor_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, - AUTO_INCREMENT = 201;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:113:"ALTER TABLE - `actor` MODIFY `actor_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, - AUTO_INCREMENT = 201;";s:3:"len";i:113;s:4:"last";i:113;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:29:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`actor`";s:5:"value";s:5:"actor";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"MODIFY";s:5:"value";s:6:"MODIFY";s:7:"keyword";s:6:"MODIFY";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:24;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:31;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"SMALLINT";s:5:"value";s:8:"SMALLINT";s:7:"keyword";s:8:"SMALLINT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:42;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"5";s:5:"value";i:5;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:52;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:63;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:72;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:86;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:92;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:107;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:108;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"201";s:5:"value";i:201;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:109;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:112;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:29;s:3:"idx";i:29;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"actor";s:6:"column";N;s:4:"expr";s:7:"`actor`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:2:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"MODIFY";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:8:"actor_id";s:4:"expr";s:10:"`actor_id`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:10:{i:0;r:79;i:1;r:86;i:2;r:93;i:3;r:100;i:4;r:107;i:5;r:114;i:6;r:121;i:7;r:128;i:8;r:135;i:9;r:142;}}i:1;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:14:"AUTO_INCREMENT";s:6:"equals";b:1;s:4:"expr";s:3:"201";s:5:"value";s:3:"201";}}}s:5:"field";N;s:7:"unknown";a:0:{}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:27;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "ALTER TABLE\n `actor` MODIFY `actor_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,\n AUTO_INCREMENT = 201;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 29, + "idx": 29, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SMALLINT", + "value": "SMALLINT", + "keyword": "SMALLINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "201", + "value": 201, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "actor_id", + "expr": "`actor_id`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@18" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "AUTO_INCREMENT", + "equals": true, + "expr": "201", + "value": "201" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 27 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh16.out b/tests/data/bugs/gh16.out index 3b4aa6c43..b9259b26a 100644 --- a/tests/data/bugs/gh16.out +++ b/tests/data/bugs/gh16.out @@ -1,31 +1,1883 @@ -a:4:{s:5:"query";s:476:"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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:476:"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";s:3:"len";i:476;s:4:"last";i:476;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:134:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"`jos_core_acl_aro`";s:5:"value";s:16:"jos_core_acl_aro";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:36;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"int";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:41;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:44;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:45;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:47;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:49;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:57;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`section_value`";s:5:"value";s:13:"section_value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:61;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"varchar";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:77;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:84;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"240";s:5:"value";i:240;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:85;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:90;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:99;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"'0'";s:5:"value";s:1:"0";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:107;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:110;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:114;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:121;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"varchar";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:122;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:129;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"240";s:5:"value";i:240;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:130;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:133;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:134;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:135;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:143;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:144;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:151;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"''";s:5:"value";s:0:"";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:152;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:154;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:155;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`order_value`";s:5:"value";s:11:"order_value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:158;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:171;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"int";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:172;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:175;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:176;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:178;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:179;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:180;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:188;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:189;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:196;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"'0'";s:5:"value";s:1:"0";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:197;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:200;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:201;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`name`";s:5:"value";s:4:"name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:204;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:210;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"varchar";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:211;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:218;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"255";s:5:"value";i:255;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:219;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:222;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:223;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:224;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:232;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:233;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:240;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"''";s:5:"value";s:0:"";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:241;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:243;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:244;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`hidden`";s:5:"value";s:6:"hidden";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:247;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:255;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"int";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:256;}i:77;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:259;}i:78;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:260;}i:79;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:262;}i:80;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:263;}i:81;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:264;}i:82;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:272;}i:83;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:273;}i:84;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:280;}i:85;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"'0'";s:5:"value";s:1:"0";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:281;}i:86;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:284;}i:87;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:285;}i:88;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:288;}i:89;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:299;}i:90;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:300;}i:91;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:301;}i:92;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:305;}i:93;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:306;}i:94;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:307;}i:95;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"UNIQUE KEY";s:5:"value";s:10:"UNIQUE KEY";s:7:"keyword";s:10:"UNIQUE KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:310;}i:96;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:320;}i:97;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:29:"`jos_section_value_value_aro`";s:5:"value";s:27:"jos_section_value_value_aro";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:321;}i:98;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:350;}i:99;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:351;}i:100;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`section_value`";s:5:"value";s:13:"section_value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:352;}i:101;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:367;}i:102;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"100";s:5:"value";i:100;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:368;}i:103;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:371;}i:104;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:372;}i:105;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:373;}i:106;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:380;}i:107;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"15";s:5:"value";i:15;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:381;}i:108;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:383;}i:109;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:384;}i:110;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:385;}i:111;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:386;}i:112;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:391;}i:113;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BTREE";s:5:"value";s:5:"BTREE";s:7:"keyword";s:5:"BTREE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:392;}i:114;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:397;}i:115;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:398;}i:116;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:401;}i:117;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:404;}i:118;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:21:"`jos_gacl_hidden_aro`";s:5:"value";s:19:"jos_gacl_hidden_aro";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:405;}i:119;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:426;}i:120;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:427;}i:121;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`hidden`";s:5:"value";s:6:"hidden";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:428;}i:122;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:436;}i:123;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:437;}i:124;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:438;}i:125;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:439;}i:126;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:440;}i:127;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:446;}i:128;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:447;}i:129;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:453;}i:130;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"DEFAULT CHARSET";s:5:"value";s:15:"DEFAULT CHARSET";s:7:"keyword";s:15:"DEFAULT CHARSET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:454;}i:131;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:469;}i:132;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"latin1";s:5:"value";s:6:"latin1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:470;}i:133;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:134;s:3:"idx";i:134;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:16:"jos_core_acl_aro";s:6:"column";N;s:4:"expr";s:18:"`jos_core_acl_aro`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}i:4;a:4:{s:4:"name";s:15:"DEFAULT CHARSET";s:6:"equals";b:1;s:4:"expr";s:6:"latin1";s:5:"value";s:6:"latin1";}}}s:6:"fields";a:9:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:2:"id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:1:{i:0;s:2:"11";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:13:"section_value";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:3:"240";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"0";s:4:"expr";s:3:"'0'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"'0'";}}}}i:2;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:5:"value";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:3:"240";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:0:"";s:4:"expr";s:2:"''";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:2:"''";}}}}i:3;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:11:"order_value";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:1:{i:0;s:2:"11";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"0";s:4:"expr";s:3:"'0'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"'0'";}}}}i:4;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:4:"name";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:3:"255";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:0:"";s:4:"expr";s:2:"''";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:2:"''";}}}}i:5;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:6:"hidden";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:1:{i:0;s:2:"11";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"0";s:4:"expr";s:3:"'0'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"'0'";}}}}i:6;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:2:"id";}}s:4:"type";s:11:"PRIMARY KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}i:7;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";s:27:"jos_section_value_value_aro";s:7:"columns";a:2:{i:0;a:2:{s:4:"name";s:13:"section_value";s:6:"length";i:100;}i:1;a:2:{s:4:"name";s:5:"value";s:6:"length";i:15;}}s:4:"type";s:10:"UNIQUE KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:5:"USING";s:6:"equals";b:0;s:4:"expr";s:5:"BTREE";s:5:"value";s:5:"BTREE";}}}}s:10:"references";N;s:7:"options";N;}i:8;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";s:19:"jos_gacl_hidden_aro";s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:6:"hidden";}}s:4:"type";s:3:"KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:133;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 134, + "idx": 134, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`jos_core_acl_aro`", + "value": "jos_core_acl_aro", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`section_value`", + "value": "section_value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "240", + "value": 240, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'0'", + "value": "0", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "240", + "value": 240, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 1, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`order_value`", + "value": "order_value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'0'", + "value": "0", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 1, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 1, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`hidden`", + "value": "hidden", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'0'", + "value": "0", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 1, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE KEY", + "value": "UNIQUE KEY", + "keyword": "UNIQUE KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`jos_section_value_value_aro`", + "value": "jos_section_value_value_aro", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`section_value`", + "value": "section_value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "100", + "value": 100, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "15", + "value": 15, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BTREE", + "value": "BTREE", + "keyword": "BTREE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`jos_gacl_hidden_aro`", + "value": "jos_gacl_hidden_aro", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`hidden`", + "value": "hidden", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "latin1", + "value": "latin1", + "keyword": null, + "type": { + "@type": "@137" + }, + "flags": 0, + "position": 470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "section_value", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "240" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "database": null, + "table": null, + "column": "0", + "expr": "'0'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'0'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "value", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "240" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "database": null, + "table": null, + "column": "", + "expr": "''", + "alias": null, + "function": null, + "subquery": null + }, + "value": "''" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "order_value", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "database": null, + "table": null, + "column": "0", + "expr": "'0'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'0'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "name", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "database": null, + "table": null, + "column": "", + "expr": "''", + "alias": null, + "function": null, + "subquery": null + }, + "value": "''" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "hidden", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "database": null, + "table": null, + "column": "0", + "expr": "'0'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'0'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": "jos_gacl_hidden_aro", + "columns": [ + { + "name": "hidden" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 133 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh202.in b/tests/data/bugs/gh202.in new file mode 100644 index 000000000..0a8e86066 --- /dev/null +++ b/tests/data/bugs/gh202.in @@ -0,0 +1 @@ +update tbl_customer t set t.`description`=:yp where t.id=1; \ No newline at end of file diff --git a/tests/data/bugs/gh202.out b/tests/data/bugs/gh202.out new file mode 100644 index 000000000..354443308 --- /dev/null +++ b/tests/data/bugs/gh202.out @@ -0,0 +1,347 @@ +{ + "query": "update tbl_customer t set t.`description`=:yp where t.id=1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "update tbl_customer t set t.`description`=:yp where t.id=1;", + "len": 59, + "last": 59, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "update", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_customer", + "value": "tbl_customer", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "set", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`description`", + "value": "description", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":yp", + "value": "yp", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl_customer", + "column": null, + "expr": "tbl_customer", + "alias": "t", + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "t.`description`", + "value": ":yp" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t", + "id" + ], + "isOperator": false, + "expr": "t.id=1", + "leftOperand": "t.id", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh234.in b/tests/data/bugs/gh234.in new file mode 100644 index 000000000..ad83c6900 --- /dev/null +++ b/tests/data/bugs/gh234.in @@ -0,0 +1 @@ +ALTER TABLE `mail_template` CHANGE COLUMN `mtpl_group` `mtpl_group` ENUM('ORDER') NULL DEFAULT NULL ; \ No newline at end of file diff --git a/tests/data/bugs/gh234.out b/tests/data/bugs/gh234.out new file mode 100644 index 000000000..a6b78dde9 --- /dev/null +++ b/tests/data/bugs/gh234.out @@ -0,0 +1,429 @@ +{ + "query": "ALTER TABLE `mail_template` CHANGE COLUMN `mtpl_group` `mtpl_group` ENUM('ORDER') NULL DEFAULT NULL ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `mail_template` CHANGE COLUMN `mtpl_group` `mtpl_group` ENUM('ORDER') NULL DEFAULT NULL ;", + "len": 101, + "last": 101, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 27, + "idx": 27, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mail_template`", + "value": "mail_template", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mtpl_group`", + "value": "mtpl_group", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mtpl_group`", + "value": "mtpl_group", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'ORDER'", + "value": "ORDER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "mail_template", + "column": null, + "expr": "`mail_template`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE", + "2": "COLUMN" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "mtpl_group", + "expr": "`mtpl_group`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh317.in b/tests/data/bugs/gh317.in new file mode 100644 index 000000000..aef97adbf --- /dev/null +++ b/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/tests/data/bugs/gh317.out b/tests/data/bugs/gh317.out new file mode 100644 index 000000000..50188cf93 --- /dev/null +++ b/tests/data/bugs/gh317.out @@ -0,0 +1,283 @@ +{ + "query": "ALTER TABLE `demo` ADD KEY `IDX_REPAIR` (`REPAIR`);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `demo` ADD KEY `IDX_REPAIR` (`REPAIR`);", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`demo`", + "value": "demo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`IDX_REPAIR`", + "value": "IDX_REPAIR", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`REPAIR`", + "value": "REPAIR", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "demo", + "column": null, + "expr": "`demo`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": { + "name": "KEY", + "equals": false, + "expr": "`IDX_REPAIR`", + "value": "IDX_REPAIR" + } + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@17" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh412.in b/tests/data/bugs/gh412.in new file mode 100644 index 000000000..513a1deeb --- /dev/null +++ b/tests/data/bugs/gh412.in @@ -0,0 +1 @@ +SELECT 1, 2, ?, 3 \ No newline at end of file diff --git a/tests/data/bugs/gh412.out b/tests/data/bugs/gh412.out new file mode 100644 index 000000000..1e101e37f --- /dev/null +++ b/tests/data/bugs/gh412.out @@ -0,0 +1,255 @@ +{ + "query": "SELECT 1, 2, ?, 3", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 1, 2, ?, 3", + "len": 17, + "last": 17, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "?", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "3", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh478.in b/tests/data/bugs/gh478.in new file mode 100644 index 000000000..993f0299d --- /dev/null +++ b/tests/data/bugs/gh478.in @@ -0,0 +1,4 @@ +ALTER TABLE `MY_TABLE` +MODIFY `FOO` INT(11) NULL, +MODIFY `MY_COLUMN` ENUM('INSERT','UPDATE','DELETE','REPLACE') NULL, +MODIFY `BAR` VARCHAR(255) NULL; diff --git a/tests/data/bugs/gh478.out b/tests/data/bugs/gh478.out new file mode 100644 index 000000000..6c7173ed6 --- /dev/null +++ b/tests/data/bugs/gh478.out @@ -0,0 +1,749 @@ +{ + "query": "ALTER TABLE `MY_TABLE`\nMODIFY `FOO` INT(11) NULL,\nMODIFY `MY_COLUMN` ENUM('INSERT','UPDATE','DELETE','REPLACE') NULL,\nMODIFY `BAR` VARCHAR(255) NULL;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `MY_TABLE`\nMODIFY `FOO` INT(11) NULL,\nMODIFY `MY_COLUMN` ENUM('INSERT','UPDATE','DELETE','REPLACE') NULL,\nMODIFY `BAR` VARCHAR(255) NULL;\n", + "len": 150, + "last": 150, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 49, + "idx": 49, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`MY_TABLE`", + "value": "MY_TABLE", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`FOO`", + "value": "FOO", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`MY_COLUMN`", + "value": "MY_COLUMN", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'INSERT'", + "value": "INSERT", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'UPDATE'", + "value": "UPDATE", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 1, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'DELETE'", + "value": "DELETE", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 1, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'REPLACE'", + "value": "REPLACE", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 1, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`BAR`", + "value": "BAR", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@55" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "MY_TABLE", + "column": null, + "expr": "`MY_TABLE`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "FOO", + "expr": "`FOO`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@18" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "MY_COLUMN", + "expr": "`MY_COLUMN`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "BAR", + "expr": "`BAR`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@48" + }, + { + "@type": "@49" + }, + { + "@type": "@50" + }, + { + "@type": "@51" + }, + { + "@type": "@52" + }, + { + "@type": "@53" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 46 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh492.in b/tests/data/bugs/gh492.in new file mode 100644 index 000000000..33e397764 --- /dev/null +++ b/tests/data/bugs/gh492.in @@ -0,0 +1,3 @@ +UPDATE order +SET price = ? +WHERE orderid = ? \ No newline at end of file diff --git a/tests/data/bugs/gh492.out b/tests/data/bugs/gh492.out new file mode 100644 index 000000000..db73d01ee --- /dev/null +++ b/tests/data/bugs/gh492.out @@ -0,0 +1,315 @@ +{ + "query": "UPDATE order\nSET price = ?\nWHERE orderid = ?", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE order\nSET price = ?\nWHERE orderid = ?", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "order", + "value": "ORDER", + "keyword": "ORDER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "price", + "value": "price", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orderid", + "value": "orderid", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "price", + "value": "?" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "orderid" + ], + "isOperator": false, + "expr": "orderid = ?", + "leftOperand": "orderid", + "operator": "=", + "rightOperand": "?" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh496.in b/tests/data/bugs/gh496.in new file mode 100644 index 000000000..935f01e17 --- /dev/null +++ b/tests/data/bugs/gh496.in @@ -0,0 +1,3 @@ +SELECT COUNT(*) AS amount +FROM one i +JOIN two io ON io.id = i.id \ No newline at end of file diff --git a/tests/data/bugs/gh496.out b/tests/data/bugs/gh496.out new file mode 100644 index 000000000..fd34fce9b --- /dev/null +++ b/tests/data/bugs/gh496.out @@ -0,0 +1,508 @@ +{ + "query": "SELECT COUNT(*) AS amount\nFROM one i\nJOIN two io ON io.id = i.id", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT COUNT(*) AS amount\nFROM one i\nJOIN two io ON io.id = i.id", + "len": 71, + "last": 71, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 35, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "amount", + "value": "amount", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "one", + "value": "one", + "keyword": "ONE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "JOIN", + "value": "JOIN", + "keyword": "JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "two", + "value": "two", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "io", + "value": "io", + "keyword": "IO", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "io", + "value": "io", + "keyword": "IO", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "COUNT(*)", + "alias": "amount", + "function": "COUNT", + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "one", + "column": null, + "expr": "one", + "alias": "i", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "JOIN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "two", + "column": null, + "expr": "two", + "alias": "io", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "io", + "id", + "i" + ], + "isOperator": false, + "expr": "io.id = i.id", + "leftOperand": "io.id", + "operator": "=", + "rightOperand": "i.id" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh498.in b/tests/data/bugs/gh498.in new file mode 100644 index 000000000..8c3d72d92 --- /dev/null +++ b/tests/data/bugs/gh498.in @@ -0,0 +1,4 @@ +SELECT ? +FROM uno +JOIN dos ON dos.id = uno.id +LIMIT ? OFFSET ? \ No newline at end of file diff --git a/tests/data/bugs/gh498.out b/tests/data/bugs/gh498.out new file mode 100644 index 000000000..4f514bd51 --- /dev/null +++ b/tests/data/bugs/gh498.out @@ -0,0 +1,481 @@ +{ + "query": "SELECT ?\nFROM uno\nJOIN dos ON dos.id = uno.id\nLIMIT ? OFFSET ?", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT ?\nFROM uno\nJOIN dos ON dos.id = uno.id\nLIMIT ? OFFSET ?", + "len": 63, + "last": 63, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 32, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uno", + "value": "uno", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "JOIN", + "value": "JOIN", + "keyword": "JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dos", + "value": "dos", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dos", + "value": "dos", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uno", + "value": "uno", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "?", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "uno", + "column": null, + "expr": "uno", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": "?", + "rowCount": "?" + }, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "JOIN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "dos", + "column": null, + "expr": "dos", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "dos", + "id", + "uno" + ], + "isOperator": false, + "expr": "dos.id = uno.id", + "leftOperand": "dos.id", + "operator": "=", + "rightOperand": "uno.id" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh499.in b/tests/data/bugs/gh499.in new file mode 100644 index 000000000..ff1582c96 --- /dev/null +++ b/tests/data/bugs/gh499.in @@ -0,0 +1,11 @@ +UPDATE + users +SET + username = ?, + id=155; + +UPDATE + users +SET + username = :user_name, + id=155; \ No newline at end of file diff --git a/tests/data/bugs/gh499.out b/tests/data/bugs/gh499.out new file mode 100644 index 000000000..82de99e2a --- /dev/null +++ b/tests/data/bugs/gh499.out @@ -0,0 +1,519 @@ +{ + "query": "UPDATE\n users\nSET\n username = ?,\n id=155;\n\nUPDATE\n users\nSET\n username = :user_name,\n id=155;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE\n users\nSET\n username = ?,\n id=155;\n\nUPDATE\n users\nSET\n username = :user_name,\n id=155;", + "len": 111, + "last": 111, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 36, + "idx": 36, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":user_name", + "value": "user_name", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "username", + "value": "?" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "id", + "value": "155" + } + ], + "where": null, + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "username", + "value": ":user_name" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "id", + "value": "155" + } + ], + "where": null, + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 16, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh508.in b/tests/data/bugs/gh508.in new file mode 100644 index 000000000..bef3a359a --- /dev/null +++ b/tests/data/bugs/gh508.in @@ -0,0 +1 @@ +0X0F \ No newline at end of file diff --git a/tests/data/bugs/gh508.out b/tests/data/bugs/gh508.out new file mode 100644 index 000000000..d555d434d --- /dev/null +++ b/tests/data/bugs/gh508.out @@ -0,0 +1,68 @@ +{ + "query": "0X0F", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "0X0F", + "len": 4, + "last": 4, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 2, + "idx": 2, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0X0F", + "value": "0X0F", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected beginning of statement.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh511.in b/tests/data/bugs/gh511.in new file mode 100644 index 000000000..dd0c14128 --- /dev/null +++ b/tests/data/bugs/gh511.in @@ -0,0 +1,2 @@ +ALTER TABLE users_type MODIFY limitations ENUM('tout', 'rien', 'bu', 'agence', 'agence_limite', 'n-1', 'agence_inactif'); +UPDATE users_type SET limitations = 'agence_inactif' WHERE id_users_type = 19; diff --git a/tests/data/bugs/gh511.out b/tests/data/bugs/gh511.out new file mode 100644 index 000000000..759fbef3a --- /dev/null +++ b/tests/data/bugs/gh511.out @@ -0,0 +1,820 @@ +{ + "query": "ALTER TABLE users_type MODIFY limitations ENUM('tout', 'rien', 'bu', 'agence', 'agence_limite', 'n-1', 'agence_inactif');\nUPDATE users_type SET limitations = 'agence_inactif' WHERE id_users_type = 19;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE users_type MODIFY limitations ENUM('tout', 'rien', 'bu', 'agence', 'agence_limite', 'n-1', 'agence_inactif');\nUPDATE users_type SET limitations = 'agence_inactif' WHERE id_users_type = 19;\n", + "len": 201, + "last": 201, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 56, + "idx": 56, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users_type", + "value": "users_type", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "limitations", + "value": "limitations", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'tout'", + "value": "tout", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'rien'", + "value": "rien", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'bu'", + "value": "bu", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 1, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'agence'", + "value": "agence", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'agence_limite'", + "value": "agence_limite", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 1, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'n-1'", + "value": "n-1", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 1, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'agence_inactif'", + "value": "agence_inactif", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 1, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users_type", + "value": "users_type", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "limitations", + "value": "limitations", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'agence_inactif'", + "value": "agence_inactif", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 1, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id_users_type", + "value": "id_users_type", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "19", + "value": 19, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users_type", + "column": null, + "expr": "users_type", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "limitations", + "expr": "limitations", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@18" + }, + { + "@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" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users_type", + "column": null, + "expr": "users_type", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "limitations", + "value": "'agence_inactif'" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "id_users_type" + ], + "isOperator": false, + "expr": "id_users_type = 19", + "leftOperand": "id_users_type", + "operator": "=", + "rightOperand": "19" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 33, + "last": 52 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/gh9.out b/tests/data/bugs/gh9.out index 6c7d51b5d..08822c559 100644 --- a/tests/data/bugs/gh9.out +++ b/tests/data/bugs/gh9.out @@ -1,34 +1,1092 @@ -a:4:{s:5:"query";s:213:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:213:"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;";s:3:"len";i:213;s:4:"last";i:213;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:75:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:24;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:38;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"START TRANSACTION";s:5:"value";s:17:"START TRANSACTION";s:7:"keyword";s:17:"START TRANSACTION";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:66;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:69;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:76;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`tb`";s:5:"value";s:2:"tb";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:94;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:98;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:107;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:115;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`position`";s:5:"value";s:8:"position";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:116;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:126;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:127;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:131;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:139;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:140;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:141;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:152;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:153;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:154;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:155;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:160;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:161;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:162;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:163;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:164;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"INDEX";s:5:"value";s:5:"INDEX";s:7:"keyword";s:5:"INDEX";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:165;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:170;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:171;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:172;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`position`";s:5:"value";s:8:"position";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:173;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:183;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:184;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:185;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:186;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:187;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:188;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:194;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:195;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:196;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:197;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:203;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:204;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"COMMIT";s:5:"value";s:6:"COMMIT";s:7:"keyword";s:6:"COMMIT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:206;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:212;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:75;s:3:"idx";i:75;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:3:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:0:{}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:9;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:0:{}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:10;s:4:"last";i:19;}i:2;O:52:"PhpMyAdmin\SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:1;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"tb";s:6:"column";N;s:4:"expr";s:4:"`tb`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:3:"uid";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:4;s:8:"UNSIGNED";}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:21;s:4:"last";i:47;}}s:3:"end";O:52:"PhpMyAdmin\SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:2;s:10:"statements";N;s:3:"end";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"COMMIT";}}s:5:"first";i:72;s:4:"last";i:72;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:17:"START TRANSACTION";}}s:5:"first";i:20;s:4:"last";i:20;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:5:{i:0;a:3:{i:0;s:42:"This type of clause was previously parsed.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:76:"A new statement was found, but no delimiter between it and the previous one.";i:1;r:149;i:2;i:0;}i:2;a:3:{i:0;s:42:"A comma or a closing bracket was expected.";i:1;r:275;i:2;i:0;}i:3;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:352;i:2;i:0;}i:4;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:394;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 75, + "idx": 75, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tb`", + "value": "tb", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`position`", + "value": "position", + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 2, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 2, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`position`", + "value": "position", + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 2, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "uid", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "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": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 72, + "last": 72 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 20, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This type of clause was previously parsed.", + { + "@type": "@16" + }, + 0 + ], + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@26" + }, + 0 + ], + [ + "A comma or a closing bracket was expected.", + { + "@type": "@46" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@57" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@63" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/bugs/pma11800.out b/tests/data/bugs/pma11800.out index 054444c5e..075c0e11f 100644 --- a/tests/data/bugs/pma11800.out +++ b/tests/data/bugs/pma11800.out @@ -1 +1,177 @@ -a:4:{s:5:"query";s:27:"SELECT 'a' REGEXP '^[a-d]';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:27:"SELECT 'a' REGEXP '^[a-d]';";s:3:"len";i:27;s:4:"last";i:27;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"'a'";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"REGEXP";s:5:"value";s:6:"REGEXP";s:7:"keyword";s:6:"REGEXP";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'^[a-d]'";s:5:"value";s:6:"^[a-d]";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:26;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:18:"'a'REGEXP '^[a-d]'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:6;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 'a' REGEXP '^[a-d]';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 'a' REGEXP '^[a-d]';", + "len": 27, + "last": 27, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'a'", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'^[a-d]'", + "value": "^[a-d]", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "'a' REGEXP '^[a-d]'", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/pma11836.out b/tests/data/bugs/pma11836.out index 9faf69534..d2b362ae2 100644 --- a/tests/data/bugs/pma11836.out +++ b/tests/data/bugs/pma11836.out @@ -1 +1,622 @@ -a:4:{s:5:"query";s:94:"SELECT * FROM alumnos WHERE id = IF(id = 1, id, nombre) AND id not in (SELECT id FROM alumnos)";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:94:"SELECT * FROM alumnos WHERE id = IF(id = 1, id, nombre) AND id not in (SELECT id FROM alumnos)";s:3:"len";i:94;s:4:"last";i:94;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:45:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"alumnos";s:5:"value";s:7:"alumnos";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IF";s:5:"value";s:2:"IF";s:7:"keyword";s:2:"IF";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:33;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:35;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:39;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:41;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:42;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:46;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"nombre";s:5:"value";s:6:"nombre";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:48;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:54;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:60;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"not in";s:5:"value";s:6:"NOT IN";s:7:"keyword";s:6:"NOT IN";s:4:"type";i:1;s:5:"flags";i:39;s:8:"position";i:63;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:70;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:71;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:78;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:81;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"alumnos";s:5:"value";s:7:"alumnos";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:93;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:45;s:3:"idx";i:45;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"alumnos";s:6:"column";N;s:4:"expr";s:7:"alumnos";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:3:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:2:"id";i:1;s:6:"nombre";}s:10:"isOperator";b:0;s:4:"expr";s:27:"id = IF(id = 1, id, nombre)";}i:1;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:2;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:2:"id";i:1;s:7:"alumnos";}s:10:"isOperator";b:0;s:4:"expr";s:34:"id not in (SELECT id FROM alumnos)";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:43;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT * FROM alumnos WHERE id = IF(id = 1, id, nombre) AND id not in (SELECT id FROM alumnos)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 45, + "idx": 45, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alumnos", + "value": "alumnos", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nombre", + "value": "nombre", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "not in", + "value": "NOT IN", + "keyword": "NOT IN", + "type": { + "@type": "@3" + }, + "flags": 39, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alumnos", + "value": "alumnos", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "alumnos", + "column": null, + "expr": "alumnos", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "id", + "nombre" + ], + "isOperator": false, + "expr": "id = IF(id = 1, id, nombre)", + "leftOperand": "id", + "operator": "=", + "rightOperand": "IF(id = 1, id, nombre)" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "id", + "alumnos" + ], + "isOperator": false, + "expr": "id not in (SELECT id FROM alumnos)", + "leftOperand": "id not in (SELECT id FROM alumnos)", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 43 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/pma11843.out b/tests/data/bugs/pma11843.out index 2f1960b01..7c3b03f12 100644 --- a/tests/data/bugs/pma11843.out +++ b/tests/data/bugs/pma11843.out @@ -1,10 +1,525 @@ -a:4:{s:5:"query";s:119:"CREATE TABLE `mytable` ( - `id` int(11) NOT NULL, - `created_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP -);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:119:"CREATE TABLE `mytable` ( - `id` int(11) NOT NULL, - `created_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP -);";s:3:"len";i:119;s:4:"last";i:119;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:34:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`mytable`";s:5:"value";s:7:"mytable";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:29;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"int";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:34;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:37;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:50;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`created_at`";s:5:"value";s:10:"created_at";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:56;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"timestamp";s:5:"value";s:9:"timestamp";s:7:"keyword";s:9:"TIMESTAMP";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:69;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:78;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"6";s:5:"value";i:6;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:79;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:82;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:90;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:91;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"CURRENT_TIMESTAMP";s:5:"value";s:17:"CURRENT_TIMESTAMP";s:7:"keyword";s:17:"CURRENT_TIMESTAMP";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:99;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:116;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:117;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:118;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:34;s:3:"idx";i:34;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"mytable";s:6:"column";N;s:4:"expr";s:9:"`mytable`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:2:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:2:"id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:1:{i:0;s:2:"11";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:10:"created_at";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:9:"TIMESTAMP";s:10:"parameters";a:1:{i:0;s:1:"6";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:17:"CURRENT_TIMESTAMP";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:17:"CURRENT_TIMESTAMP";}}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:32;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mytable`", + "value": "mytable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`created_at`", + "value": "created_at", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "timestamp", + "value": "timestamp", + "keyword": "TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "6", + "value": 6, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "created_at", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TIMESTAMP", + "parameters": [ + "6" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/bugs/pma11867.in b/tests/data/bugs/pma11867.in deleted file mode 100644 index 028ef7137..000000000 --- a/tests/data/bugs/pma11867.in +++ /dev/null @@ -1 +0,0 @@ -DESC tablename; \ No newline at end of file diff --git a/tests/data/bugs/pma11867.out b/tests/data/bugs/pma11867.out deleted file mode 100644 index ec3baa992..000000000 --- a/tests/data/bugs/pma11867.out +++ /dev/null @@ -1 +0,0 @@ -a:4:{s:5:"query";s:15:"DESC tablename;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:15:"DESC tablename;";s:3:"len";i:15;s:4:"last";i:15;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DESC";s:5:"value";s:4:"DESC";s:7:"keyword";s:4:"DESC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"tablename";s:5:"value";s:9:"tablename";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:14;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ExplainStatement":4:{s:7:"unknown";a:3:{i:0;r:9;i:1;r:16;i:2;r:23;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file diff --git a/tests/data/bugs/pma11879.out b/tests/data/bugs/pma11879.out index f959e92a3..3780472f1 100644 --- a/tests/data/bugs/pma11879.out +++ b/tests/data/bugs/pma11879.out @@ -1,10 +1,708 @@ -a:4:{s:5:"query";s:175:"INSERT INTO - tbproject(`id`, `name`, `description`, `create_dt`, `dbtype`, `useclause`, `sync_comments`) -VALUES - (NULL, 'testdb', 'Descrizione test', NOW(), 'mySQL', '', 1);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:175:"INSERT INTO - tbproject(`id`, `name`, `description`, `create_dt`, `dbtype`, `useclause`, `sync_comments`) -VALUES - (NULL, 'testdb', 'Descrizione test', NOW(), 'mySQL', '', 1);";s:3:"len";i:175;s:4:"last";i:175;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:54:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"tbproject";s:5:"value";s:9:"tbproject";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:24;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:28;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`name`";s:5:"value";s:4:"name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:36;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`description`";s:5:"value";s:11:"description";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:51;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`create_dt`";s:5:"value";s:9:"create_dt";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:53;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:64;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`dbtype`";s:5:"value";s:6:"dbtype";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:66;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:74;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`useclause`";s:5:"value";s:9:"useclause";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:76;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:87;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`sync_comments`";s:5:"value";s:13:"sync_comments";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:89;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:104;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:105;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:106;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:115;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:116;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:120;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:121;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'testdb'";s:5:"value";s:6:"testdb";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:122;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:130;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"'Descrizione test'";s:5:"value";s:16:"Descrizione test";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:132;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:150;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:151;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"NOW";s:5:"value";s:3:"NOW";s:7:"keyword";s:3:"NOW";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:152;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:155;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:156;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:157;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:158;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"'mySQL'";s:5:"value";s:5:"mySQL";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:159;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:166;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:167;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"''";s:5:"value";s:0:"";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:168;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:170;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:171;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:172;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:173;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:174;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:54;s:3:"idx";i:54;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"tbproject";s:6:"column";N;s:4:"expr";s:9:"tbproject";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:7:{i:0;s:2:"id";i:1;s:4:"name";i:2;s:11:"description";i:3;s:9:"create_dt";i:4;s:6:"dbtype";i:5;s:9:"useclause";i:6;s:13:"sync_comments";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";a:1:{i:0;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:7:{i:0;s:4:"NULL";i:1;s:8:"'testdb'";i:2;s:18:"'Descrizione test'";i:3;s:5:"NOW()";i:4;s:7:"'mySQL'";i:5;s:2:"''";i:6;s:1:"1";}s:6:"values";a:7:{i:0;s:4:"NULL";i:1;s:6:"testdb";i:2;s:16:"Descrizione test";i:3;s:5:"NOW()";i:4;s:5:"mySQL";i:5;s:0:"";i:6;s:1:"1";}}}s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:51;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 54, + "idx": 54, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbproject", + "value": "tbproject", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`description`", + "value": "description", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`create_dt`", + "value": "create_dt", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`dbtype`", + "value": "dbtype", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`useclause`", + "value": "useclause", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sync_comments`", + "value": "sync_comments", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testdb'", + "value": "testdb", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Descrizione test'", + "value": "Descrizione test", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 1, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOW", + "value": "NOW", + "keyword": "NOW", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mySQL'", + "value": "mySQL", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 1, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 1, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": 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, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lex.out b/tests/data/lexer/lex.out index 634ebbb76..60948b33c 100644 --- a/tests/data/lexer/lex.out +++ b/tests/data/lexer/lex.out @@ -1 +1,101 @@ -a:4:{s:5:"query";s:9:"SELECT \\";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:9:"SELECT \\";s:3:"len";i:9;s:4:"last";i:9;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"\";s:5:"value";s:1:"\";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"\";s:5:"value";s:1:"\";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:2:{i:0;a:4:{i:0;s:21:"Unexpected character.";i:1;s:1:"\";i:2;i:7;i:3;i:0;}i:1;a:4:{i:0;s:21:"Unexpected character.";i:1;s:1:"\";i:2;i:8;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT \\\\", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT \\\\", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\\", + "value": "\\", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\\", + "value": "\\", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Unexpected character.", + "\\", + 7, + 0 + ], + [ + "Unexpected character.", + "\\", + 8, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexBool.out b/tests/data/lexer/lexBool.out index c801c7a4d..70aa6b7a2 100644 --- a/tests/data/lexer/lexBool.out +++ b/tests/data/lexer/lexBool.out @@ -1 +1,112 @@ -a:4:{s:5:"query";s:18:"SELECT true, FalSe";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:18:"SELECT true, FalSe";s:3:"len";i:18;s:4:"last";i:18;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:7:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"true";s:5:"value";b:1;s:7:"keyword";N;s:4:"type";i:5;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"FalSe";s:5:"value";b:0;s:7:"keyword";N;s:4:"type";i:5;s:5:"flags";i:1;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:7;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT true, FalSe", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT true, FalSe", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 7, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "true", + "value": true, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Bool", + "value": 5 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FalSe", + "value": false, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexComment.out b/tests/data/lexer/lexComment.out index c3b81e84a..d6f7b9857 100644 --- a/tests/data/lexer/lexComment.out +++ b/tests/data/lexer/lexComment.out @@ -1,10 +1,312 @@ -a:4:{s:5:"query";s:110:"# comment -SELECT /*!50000 STRAIGHT_JOIN */ col1 FROM table1, table2 /* select query */ --- comment --- comment 2";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:110:"# comment -SELECT /*!50000 STRAIGHT_JOIN */ col1 FROM table1, table2 /* select query */ --- comment --- comment 2";s:3:"len";i:110;s:4:"last";i:111;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:25:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"# comment";s:5:"value";s:9:"# comment";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:1;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"/*!50000";s:5:"value";s:8:"/*!50000";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:10;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"STRAIGHT_JOIN";s:5:"value";s:13:"STRAIGHT_JOIN";s:7:"keyword";s:13:"STRAIGHT_JOIN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"*/";s:5:"value";s:2:"*/";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:40;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col1";s:5:"value";s:4:"col1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:43;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:59;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:61;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"/* select query */";s:5:"value";s:18:"/* select query */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:68;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"-- comment";s:5:"value";s:10:"-- comment";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:87;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"-- comment 2";s:5:"value";s:12:"-- comment 2";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:98;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:25;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "# comment\nSELECT /*!50000 STRAIGHT_JOIN */ col1 FROM table1, table2 /* select query */\n-- comment\n-- comment 2", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 25, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "# comment", + "value": "# comment", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!50000", + "value": "/*!50000", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 10, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STRAIGHT_JOIN", + "value": "STRAIGHT_JOIN", + "keyword": "STRAIGHT_JOIN", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* select query */", + "value": "/* select query */", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- comment", + "value": "-- comment", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 4, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- comment 2", + "value": "-- comment 2", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 4, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexCommentEnd.out b/tests/data/lexer/lexCommentEnd.out index 35a012cd8..000095ada 100644 --- a/tests/data/lexer/lexCommentEnd.out +++ b/tests/data/lexer/lexCommentEnd.out @@ -1,7 +1,123 @@ -a:4:{s:5:"query";s:22:"SELECT 1 --- comment ---";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:22:"SELECT 1 --- comment ---";s:3:"len";i:22;s:4:"last";i:23;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:8:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"-- comment";s:5:"value";s:10:"-- comment";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"--";s:5:"value";s:2:"--";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:8;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 1\n-- comment\n--", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 1\n-- comment\n--", + "len": 22, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- comment", + "value": "-- comment", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--", + "value": "--", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 4, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexDelimiter.out b/tests/data/lexer/lexDelimiter.out index 6f45f91d2..ecd0d94a0 100644 --- a/tests/data/lexer/lexDelimiter.out +++ b/tests/data/lexer/lexDelimiter.out @@ -1,7 +1,299 @@ -a:4:{s:5:"query";s:53:"DELIMITER GO -SELECT a,b FROM foo GO -SELECT * FROM bar";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:53:"DELIMITER GO -SELECT a,b FROM foo GO -SELECT * FROM bar";s:3:"len";i:53;s:4:"last";i:53;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"GO";s:5:"value";s:2:"GO";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:24;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:29;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"GO";s:5:"value";s:2:"GO";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:33;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:36;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:43;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:0;}s:9:"delimiter";s:2:"GO";s:12:"delimiterLen";i:2;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER GO\nSELECT a,b FROM foo GO\nSELECT * FROM bar", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER GO\nSELECT a,b FROM foo GO\nSELECT * FROM bar", + "len": 53, + "last": 53, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GO", + "value": "GO", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GO", + "value": "GO", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "GO", + "delimiterLen": 2 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexDelimiter2.out b/tests/data/lexer/lexDelimiter2.out index 1772de0e4..d4e54ded8 100644 --- a/tests/data/lexer/lexDelimiter2.out +++ b/tests/data/lexer/lexDelimiter2.out @@ -1,7 +1,354 @@ -a:4:{s:5:"query";s:56:"DELIMTER // -SELECT a,b FROM test // -SELECT * FROM bar //";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:56:"DELIMTER // -SELECT a,b FROM test // -SELECT * FROM bar //";s:3:"len";i:56;s:4:"last";i:56;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:29:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DELIMTER";s:5:"value";s:8:"DELIMTER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"/";s:5:"value";s:1:"/";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:9;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"/";s:5:"value";s:1:"/";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:12;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:23;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"/";s:5:"value";s:1:"/";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:33;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"/";s:5:"value";s:1:"/";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:34;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:36;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:43;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"/";s:5:"value";s:1:"/";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:54;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"/";s:5:"value";s:1:"/";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:55;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:29;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMTER //\nSELECT a,b FROM test //\nSELECT * FROM bar //", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMTER //\nSELECT a,b FROM test //\nSELECT * FROM bar //", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 29, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMTER", + "value": "DELIMTER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/", + "value": "/", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/", + "value": "/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/", + "value": "/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/", + "value": "/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/", + "value": "/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/", + "value": "/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexDelimiterErr1.out b/tests/data/lexer/lexDelimiterErr1.out index b4a83fa84..f4df40024 100644 --- a/tests/data/lexer/lexDelimiterErr1.out +++ b/tests/data/lexer/lexDelimiterErr1.out @@ -1 +1,58 @@ -a:4:{s:5:"query";s:9:"DELIMITER";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:9:"DELIMITER";s:3:"len";i:9;s:4:"last";i:9;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:2:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:2;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:40:"Expected whitespace(s) before delimiter.";i:1;s:0:"";i:2;i:9;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 2, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Expected whitespace(s) before delimiter.", + "", + 9, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexDelimiterErr2.out b/tests/data/lexer/lexDelimiterErr2.out index 5eaa28881..2e5cbeb3e 100644 --- a/tests/data/lexer/lexDelimiterErr2.out +++ b/tests/data/lexer/lexDelimiterErr2.out @@ -1 +1,71 @@ -a:4:{s:5:"query";s:11:"DELIMITER ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:11:"DELIMITER ";s:3:"len";i:11;s:4:"last";i:11;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:3:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:3;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:19:"Expected delimiter.";i:1;s:0:"";i:2;i:11;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER \r", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER \r", + "len": 11, + "last": 11, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 3, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \r", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Expected delimiter.", + "", + 11, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexDelimiterErr3.out b/tests/data/lexer/lexDelimiterErr3.out index e15047d4f..189c05d2d 100644 --- a/tests/data/lexer/lexDelimiterErr3.out +++ b/tests/data/lexer/lexDelimiterErr3.out @@ -1,4 +1,82 @@ -a:4:{s:5:"query";s:11:"DELIMITER; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:11:"DELIMITER; -";s:3:"len";i:11;s:4:"last";i:11;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:4:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:10;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:4;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:19:"Expected delimiter.";i:1;s:0:"";i:2;i:10;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER;\n", + "len": 11, + "last": 11, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Expected delimiter.", + "", + 10, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexDelimiterLen.out b/tests/data/lexer/lexDelimiterLen.out index 5e3563ba7..0cb6db2c7 100644 --- a/tests/data/lexer/lexDelimiterLen.out +++ b/tests/data/lexer/lexDelimiterLen.out @@ -1,7 +1,178 @@ -a:4:{s:5:"query";s:73:"DELIMITER abcdefghijklmnopqrstuvwxyz -SELECT 1 abcdefghijklmnopqrstuvwxyz -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:73:"DELIMITER abcdefghijklmnopqrstuvwxyz -SELECT 1 abcdefghijklmnopqrstuvwxyz -";s:3:"len";i:73;s:4:"last";i:73;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"abcdefghijklmno";s:5:"value";s:15:"abcdefghijklmno";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"pqrstuvwxyz";s:5:"value";s:11:"pqrstuvwxyz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:37;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:44;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"abcdefghijklmno";s:5:"value";s:15:"abcdefghijklmno";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:46;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"pqrstuvwxyz";s:5:"value";s:11:"pqrstuvwxyz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:61;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:0;}s:9:"delimiter";s:15:"abcdefghijklmno";s:12:"delimiterLen";i:15;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER abcdefghijklmnopqrstuvwxyz\nSELECT 1 abcdefghijklmnopqrstuvwxyz\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER abcdefghijklmnopqrstuvwxyz\nSELECT 1 abcdefghijklmnopqrstuvwxyz\n", + "len": 73, + "last": 73, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abcdefghijklmno", + "value": "abcdefghijklmno", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pqrstuvwxyz", + "value": "pqrstuvwxyz", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abcdefghijklmno", + "value": "abcdefghijklmno", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pqrstuvwxyz", + "value": "pqrstuvwxyz", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "abcdefghijklmno", + "delimiterLen": 15 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexEmptyCStyleComment.in b/tests/data/lexer/lexEmptyCStyleComment.in new file mode 100644 index 000000000..b32191ce8 --- /dev/null +++ b/tests/data/lexer/lexEmptyCStyleComment.in @@ -0,0 +1,5 @@ +SELECT /**/ 1 +SELECT /*+*/ 1 +SELECT /***/ 1 +SELECT /** */ 1 +SELECT /* **/ 1 diff --git a/tests/data/lexer/lexEmptyCStyleComment.out b/tests/data/lexer/lexEmptyCStyleComment.out new file mode 100644 index 000000000..0313e2768 --- /dev/null +++ b/tests/data/lexer/lexEmptyCStyleComment.out @@ -0,0 +1,376 @@ +{ + "query": "SELECT /**/ 1\nSELECT /*+*/ 1\nSELECT /***/ 1\nSELECT /** */ 1\nSELECT /* **/ 1\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT /**/ 1\nSELECT /*+*/ 1\nSELECT /***/ 1\nSELECT /** */ 1\nSELECT /* **/ 1\n", + "len": 76, + "last": 76, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 31, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/**/", + "value": "/**/", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*+*/", + "value": "/*+*/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/***/", + "value": "/***/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/** */", + "value": "/** */", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* **/", + "value": "/* **/", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexKeyword.out b/tests/data/lexer/lexKeyword.out index 15061032b..aff6c684f 100644 --- a/tests/data/lexer/lexKeyword.out +++ b/tests/data/lexer/lexKeyword.out @@ -1 +1,77 @@ -a:4:{s:5:"query";s:8:"SELECT 1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:8:"SELECT 1";s:3:"len";i:8;s:4:"last";i:8;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:4:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:4;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 1", + "len": 8, + "last": 8, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexKeyword2.out b/tests/data/lexer/lexKeyword2.out index 955329eea..677ddac46 100644 --- a/tests/data/lexer/lexKeyword2.out +++ b/tests/data/lexer/lexKeyword2.out @@ -1 +1,145 @@ -a:4:{s:5:"query";s:25:"SELECT tbl.TABLE FROM tbl";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:25:"SELECT tbl.TABLE FROM tbl";s:3:"len";i:25;s:4:"last";i:25;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"tbl";s:5:"value";s:3:"tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"tbl";s:5:"value";s:3:"tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT tbl.TABLE FROM tbl", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT tbl.TABLE FROM tbl", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexLabel1.out b/tests/data/lexer/lexLabel1.out index ccb90b23a..85ee7c7d8 100644 --- a/tests/data/lexer/lexLabel1.out +++ b/tests/data/lexer/lexLabel1.out @@ -1,31 +1,844 @@ -a:4:{s:5:"query";s:187:"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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:187:"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";s:3:"len";i:187;s:4:"last";i:187;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:73:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PROCEDURE";s:5:"value";s:9:"PROCEDURE";s:7:"keyword";s:9:"PROCEDURE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"doiterate";s:5:"value";s:9:"doiterate";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:30;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BEGIN";s:5:"value";s:5:"BEGIN";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:35;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"label1 :";s:5:"value";s:8:"label1 :";s:7:"keyword";N;s:4:"type";i:10;s:5:"flags";i:0;s:8:"position";i:43;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOOP";s:5:"value";s:4:"LOOP";s:7:"keyword";s:4:"LOOP";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:52;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:61;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:65;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:70;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:73;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:75;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:76;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IF";s:5:"value";s:2:"IF";s:7:"keyword";s:2:"IF";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:82;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:85;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"<";s:5:"value";s:1:"<";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:88;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:90;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"THEN";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:93;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"ITERATE";s:5:"value";s:7:"ITERATE";s:7:"keyword";s:7:"ITERATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:104;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"label1";s:5:"value";s:6:"label1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:112;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:118;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:119;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:124;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IF";s:5:"value";s:2:"IF";s:7:"keyword";s:2:"IF";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:128;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:130;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LEAVE";s:5:"value";s:5:"LEAVE";s:7:"keyword";s:5:"LEAVE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:136;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:141;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"label1";s:5:"value";s:6:"label1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:142;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:148;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:149;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:152;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:155;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOOP";s:5:"value";s:4:"LOOP";s:7:"keyword";s:4:"LOOP";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:156;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:160;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"label1";s:5:"value";s:6:"label1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:161;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:167;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:168;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:171;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:174;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@x";s:5:"value";s:1:"x";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:175;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:177;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:178;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:179;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:180;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:182;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:183;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:184;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:73;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 73, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "doiterate", + "value": "doiterate", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1 :", + "value": "label1 :", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Label", + "value": 10 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ITERATE", + "value": "ITERATE", + "keyword": "ITERATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEAVE", + "value": "LEAVE", + "keyword": "LEAVE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@x", + "value": "x", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexLabel2.out b/tests/data/lexer/lexLabel2.out index 79c564847..5314b6662 100644 --- a/tests/data/lexer/lexLabel2.out +++ b/tests/data/lexer/lexLabel2.out @@ -1,31 +1,844 @@ -a:4:{s:5:"query";s:186:"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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:186:"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";s:3:"len";i:186;s:4:"last";i:186;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:73:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PROCEDURE";s:5:"value";s:9:"PROCEDURE";s:7:"keyword";s:9:"PROCEDURE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"doiterate";s:5:"value";s:9:"doiterate";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:30;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BEGIN";s:5:"value";s:5:"BEGIN";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:35;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"label1:";s:5:"value";s:7:"label1:";s:7:"keyword";N;s:4:"type";i:10;s:5:"flags";i:0;s:8:"position";i:43;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOOP";s:5:"value";s:4:"LOOP";s:7:"keyword";s:4:"LOOP";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:60;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:64;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:67;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:69;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:72;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:73;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:74;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:75;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IF";s:5:"value";s:2:"IF";s:7:"keyword";s:2:"IF";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:81;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:83;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:84;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"<";s:5:"value";s:1:"<";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:87;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:89;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"THEN";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:92;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"ITERATE";s:5:"value";s:7:"ITERATE";s:7:"keyword";s:7:"ITERATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:103;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"label1";s:5:"value";s:6:"label1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:111;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:117;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:123;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:126;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IF";s:5:"value";s:2:"IF";s:7:"keyword";s:2:"IF";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:127;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:129;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LEAVE";s:5:"value";s:5:"LEAVE";s:7:"keyword";s:5:"LEAVE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:135;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:140;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"label1";s:5:"value";s:6:"label1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:141;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:147;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:151;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:154;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOOP";s:5:"value";s:4:"LOOP";s:7:"keyword";s:4:"LOOP";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:155;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:159;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"label1";s:5:"value";s:6:"label1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:160;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:166;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:167;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:170;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:173;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@x";s:5:"value";s:1:"x";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:174;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:176;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:177;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:178;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:179;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:181;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:182;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:183;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:73;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 73, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "doiterate", + "value": "doiterate", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1:", + "value": "label1:", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Label", + "value": 10 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ITERATE", + "value": "ITERATE", + "keyword": "ITERATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEAVE", + "value": "LEAVE", + "keyword": "LEAVE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@x", + "value": "x", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexNoLabel.out b/tests/data/lexer/lexNoLabel.out index 65f4e038a..fb093d3e3 100644 --- a/tests/data/lexer/lexNoLabel.out +++ b/tests/data/lexer/lexNoLabel.out @@ -1,4 +1,270 @@ -a:4:{s:5:"query";s:63:"SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1 -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:63:"SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1 -";s:3:"len";i:63;s:4:"last";i:63;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"wins";s:5:"value";s:4:"wins";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"players";s:5:"value";s:7:"players";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"auth";s:5:"value";s:4:"auth";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:36;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"'[U1:123456789]'";s:5:"value";s:14:"[U1:123456789]";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:55;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:61;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1\n", + "len": 63, + "last": 63, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "wins", + "value": "wins", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "players", + "value": "players", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "auth", + "value": "auth", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'[U1:123456789]'", + "value": "[U1:123456789]", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexNumber.in b/tests/data/lexer/lexNumber.in index 4983c5a8e..0f92bbb63 100644 --- a/tests/data/lexer/lexNumber.in +++ b/tests/data/lexer/lexNumber.in @@ -1,3 +1,3 @@ -SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, 0XFfA, 1e-10, 1e10, .5e10, b'10'; --- invalid number -SELECT 12ex10, b'15'; \ No newline at end of file +SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, +0xfFA, -0xFFa, -0xfFA, 1e-10, 1e10, .5e10, b'10'; +-- invalid numbers +SELECT 12ex10, b'15', 0XFfA, -0XFfA, +0XFfA, .e4; diff --git a/tests/data/lexer/lexNumber.out b/tests/data/lexer/lexNumber.out index 49693770e..bec58f932 100644 --- a/tests/data/lexer/lexNumber.out +++ b/tests/data/lexer/lexNumber.out @@ -1,7 +1,921 @@ -a:4:{s:5:"query";s:135:"SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, 0XFfA, 1e-10, 1e10, .5e10, b'10'; --- invalid number -SELECT 12ex10, b'15';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:135:"SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, 0XFfA, 1e-10, 1e10, .5e10, b'10'; --- invalid number -SELECT 12ex10, b'15';";s:3:"len";i:135;s:4:"last";i:135;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:58:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"12";s:5:"value";i:12;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"34";s:5:"value";i:34;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:11;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:13;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"5.67";s:5:"value";d:5.6699999999999999;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:2;s:8:"position";i:15;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"0x89";s:5:"value";i:137;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:1;s:8:"position";i:21;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:25;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"-10";s:5:"value";i:-10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:8;s:8:"position";i:27;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"--11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:8;s:8:"position";i:32;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:36;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"+12";s:5:"value";i:12;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:38;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:".15";s:5:"value";d:0.14999999999999999;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:2;s:8:"position";i:43;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:46;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"0xFFa";s:5:"value";i:4090;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:1;s:8:"position";i:48;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:53;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"0xfFA";s:5:"value";i:4090;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:1;s:8:"position";i:55;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:60;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"0XFfA";s:5:"value";i:4090;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:1;s:8:"position";i:62;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:67;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"1e-10";s:5:"value";d:1.0E-10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:4;s:8:"position";i:69;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:74;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"1e10";s:5:"value";d:10000000000;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:4;s:8:"position";i:76;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:".5e10";s:5:"value";d:5000000000;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:6;s:8:"position";i:82;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:87;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"b'10'";s:5:"value";s:5:"b'10'";s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:16;s:8:"position";i:89;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:94;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"-- invalid number";s:5:"value";s:17:"-- invalid number";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:96;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:114;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"12ex10";s:5:"value";s:6:"12ex10";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:121;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:127;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:128;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:129;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'15'";s:5:"value";s:2:"15";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:130;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:134;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:58;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, +0xfFA, -0xFFa, -0xfFA, 1e-10, 1e10, .5e10, b'10';\n-- invalid numbers\nSELECT 12ex10, b'15', 0XFfA, -0XFfA, +0XFfA, .e4;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, +0xfFA, -0xFFa, -0xfFA, 1e-10, 1e10, .5e10, b'10';\n-- invalid numbers\nSELECT 12ex10, b'15', 0XFfA, -0XFfA, +0XFfA, .e4;\n", + "len": 182, + "last": 182, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 80, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "12", + "value": 12, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "34", + "value": 34, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5.67", + "value": 5.67, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0x89", + "value": 137, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-10", + "value": -10, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 8, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--11", + "value": 11, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 8, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+12", + "value": 12, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".15", + "value": 0.15, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xFFa", + "value": 4090, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xfFA", + "value": 4090, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+0xfFA", + "value": 4090, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xFFa", + "value": -4090, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xfFA", + "value": -4090, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1e-10", + "value": 1.0e-10, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 4, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1e10", + "value": 10000000000.0, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 4, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".5e10", + "value": 5000000000.0, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 6, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b'10'", + "value": "b'10'", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- invalid numbers", + "value": "-- invalid numbers", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "12ex10", + "value": "12ex10", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@66" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'15'", + "value": "15", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0XFfA", + "value": "0XFfA", + "keyword": null, + "type": { + "@type": "@66" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-", + "value": "-", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0XFfA", + "value": "0XFfA", + "keyword": null, + "type": { + "@type": "@66" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0XFfA", + "value": "0XFfA", + "keyword": null, + "type": { + "@type": "@66" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e4", + "value": "e4", + "keyword": null, + "type": { + "@type": "@66" + }, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexOperator.out b/tests/data/lexer/lexOperator.out index 836993536..48b671a58 100644 --- a/tests/data/lexer/lexOperator.out +++ b/tests/data/lexer/lexOperator.out @@ -1 +1,123 @@ -a:4:{s:5:"query";s:12:"SELECT 1 + 2";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:12:"SELECT 1 + 2";s:3:"len";i:12;s:4:"last";i:12;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:8:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:11;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:8;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 1 + 2", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 1 + 2", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexOperatorStarIsArithmetic.in b/tests/data/lexer/lexOperatorStarIsArithmetic.in new file mode 100644 index 000000000..a978dde9b --- /dev/null +++ b/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/tests/data/lexer/lexOperatorStarIsArithmetic.out b/tests/data/lexer/lexOperatorStarIsArithmetic.out new file mode 100644 index 000000000..589dd999f --- /dev/null +++ b/tests/data/lexer/lexOperatorStarIsArithmetic.out @@ -0,0 +1,7433 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 672, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 338 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 489 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 520 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 543 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "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": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 665 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 690 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 716 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment with * inside */", + "value": "/* comment with * inside */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 749 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 769 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 770 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 776 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 859 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 934 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 935 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 936 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 954 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 967 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 989 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1037 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1038 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1059 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1073 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1075 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1076 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1089 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1090 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1091 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1092 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 1106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 1157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 1193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* `comment` */", + "value": "/* `comment` */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 1236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* `comment` */", + "value": "/* `comment` */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* `comment` */", + "value": "/* `comment` */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 1276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* `comment` */", + "value": "/* `comment` */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 1359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 1413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 1451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 1491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1529 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 1561 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 1603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1642 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 1650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 1664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1671 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1684 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1688 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1701 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1722 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1749 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1780 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1796 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1815 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1847 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1848 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1864 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 1904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1908 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1909 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1925 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 1939 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1943 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1944 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 1951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1956 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1969 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 1970 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 1972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1985 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 1986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 1999 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 2035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2039 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2040 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 2047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2067 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2082 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 10, + "position": 2083 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2089 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 2096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 2132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 2145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 2181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 2195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 2232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 2245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 2282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment with FROM keyword */", + "value": "/* comment with FROM keyword */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment with USING keyword */", + "value": "/* comment with USING keyword */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment with ) */", + "value": "/* comment with ) */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 2396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment with , keyword */", + "value": "/* comment with , keyword */", + "keyword": null, + "type": { + "@type": "@255" + }, + "flags": 2, + "position": 2398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexOperatorStarIsWildcard.in b/tests/data/lexer/lexOperatorStarIsWildcard.in new file mode 100644 index 000000000..c9270891e --- /dev/null +++ b/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 +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 +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/tests/data/lexer/lexOperatorStarIsWildcard.out b/tests/data/lexer/lexOperatorStarIsWildcard.out new file mode 100644 index 000000000..37bd31303 --- /dev/null +++ b/tests/data/lexer/lexOperatorStarIsWildcard.out @@ -0,0 +1,4421 @@ +{ + "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\nSELECT a.*/* comment */ FROM\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\nSELECT DISTINCT a.*/* comment */ FROM\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", + "strict": false, + "errors": [], + "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\nSELECT a.*/* comment */ FROM\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\nSELECT DISTINCT a.*/* comment */ FROM\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": 1068, + "last": 1068, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 398, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* with a comment */", + "value": "/* with a comment */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* with a comment */", + "value": "/* with a comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 354 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* with a comment */", + "value": "/* with a comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* with a comment */", + "value": "/* with a comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 471 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "@210" + }, + "flags": 2, + "position": 565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 575 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 586 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 587 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "@210" + }, + "flags": 2, + "position": 590 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 594 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 601 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 614 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 615 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 632 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 642 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 675 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment with *,USING,FROM */", + "value": "/* comment with *,USING,FROM */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 676 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 714 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "@210" + }, + "flags": 2, + "position": 738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 741 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 759 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 766 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 773 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LABEL", + "value": "LABEL", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 796 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 800 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'%*%'", + "value": "%*%", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 801 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 815 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 818 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 824 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 834 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 835 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 836 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 837 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 838 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 839 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 840 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 854 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 855 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 857 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 859 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 868 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 876 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 890 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 891 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 921 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 929 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 932 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 946 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 947 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*comment*/", + "value": "/*comment*/", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 952 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 963 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 964 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 969 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 970 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 976 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 977 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 978 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 979 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 980 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 981 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 995 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 996 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 999 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*comment*/", + "value": "/*comment*/", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 1000 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1011 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1024 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1025 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 1026 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 1027 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1028 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 1029 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 1043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1044 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1045 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 1046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 1047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1048 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*comment*/", + "value": "/*comment*/", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 2, + "position": 1049 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1060 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1061 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexString.out b/tests/data/lexer/lexString.out index 6774cd5af..6358d1cc3 100644 --- a/tests/data/lexer/lexString.out +++ b/tests/data/lexer/lexString.out @@ -1 +1,145 @@ -a:4:{s:5:"query";s:32:"SELECT 'foo', "bar", "foo\\ bar"";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:32:"SELECT 'foo', "bar", "foo\\ bar"";s:3:"len";i:32;s:4:"last";i:32;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'foo'";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:""bar"";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:""foo\\ bar"";s:5:"value";s:8:"foo\ bar";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 'foo', \"bar\", \"foo\\\\ bar\"", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 'foo', \"bar\", \"foo\\\\ bar\"", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"bar\"", + "value": "bar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"foo\\\\ bar\"", + "value": "foo\\ bar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexStringErr1.out b/tests/data/lexer/lexStringErr1.out index 90433e40a..52fd1d2a1 100644 --- a/tests/data/lexer/lexStringErr1.out +++ b/tests/data/lexer/lexStringErr1.out @@ -1 +1,152 @@ -a:4:{s:5:"query";s:31:"SELECT 'foo', "bar", "foo\\ bar";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:31:"SELECT 'foo', "bar", "foo\\ bar";s:3:"len";i:31;s:4:"last";i:32;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'foo'";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:""bar"";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:""foo\\ bar";s:5:"value";s:7:"foo\ ba";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:28:"Ending quote " was expected.";i:1;s:0:"";i:2;i:31;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 'foo', \"bar\", \"foo\\\\ bar", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 'foo', \"bar\", \"foo\\\\ bar", + "len": 31, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"bar\"", + "value": "bar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"foo\\\\ bar", + "value": "foo\\ ba", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Ending quote \" was expected.", + "", + 31, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbol.out b/tests/data/lexer/lexSymbol.out index 065c4d6c1..08b65d864 100644 --- a/tests/data/lexer/lexSymbol.out +++ b/tests/data/lexer/lexSymbol.out @@ -1,4 +1,279 @@ -a:4:{s:5:"query";s:54:"SET @idx := 1; -SELECT @idx, @`idx`, @'idx', @@hostname";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:54:"SET @idx := 1; -SELECT @idx, @`idx`, @'idx', @@hostname";s:3:"len";i:54;s:4:"last";i:54;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:22:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:":=";s:5:"value";s:2:":=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:8;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:12;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:13;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:22;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"@`idx`";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:28;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"@'idx'";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:36;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:42;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"@@hostname";s:5:"value";s:8:"hostname";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:9;s:8:"position";i:44;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:22;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx', @@hostname", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx', @@hostname", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 22, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 8, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@`idx`", + "value": "idx", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@'idx'", + "value": "idx", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@@hostname", + "value": "hostname", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolErr1.out b/tests/data/lexer/lexSymbolErr1.out index 190deb964..37a852d5c 100644 --- a/tests/data/lexer/lexSymbolErr1.out +++ b/tests/data/lexer/lexSymbolErr1.out @@ -1,4 +1,253 @@ -a:4:{s:5:"query";s:41:"SET @idx := 1; -SELECT @idx, @`idx`, @'idx";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:41:"SET @idx := 1; -SELECT @idx, @`idx`, @'idx";s:3:"len";i:41;s:4:"last";i:42;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:19:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:":=";s:5:"value";s:2:":=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:8;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:12;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:13;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:22;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"@`idx`";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:28;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"@'idx";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:36;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:19;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:28:"Ending quote ' was expected.";i:1;s:0:"";i:2;i:41;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx", + "len": 41, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 8, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@`idx`", + "value": "idx", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@'idx", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Ending quote ' was expected.", + "", + 41, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolErr2.out b/tests/data/lexer/lexSymbolErr2.out index 3b7186350..84dd47bcd 100644 --- a/tests/data/lexer/lexSymbolErr2.out +++ b/tests/data/lexer/lexSymbolErr2.out @@ -1,4 +1,253 @@ -a:4:{s:5:"query";s:38:"SET @idx := 1; -SELECT @idx, @`idx`, @ ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:38:"SET @idx := 1; -SELECT @idx, @`idx`, @ ";s:3:"len";i:38;s:4:"last";i:38;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:19:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:":=";s:5:"value";s:2:":=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:8;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:12;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:13;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:22;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"@`idx`";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:28;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"@";s:5:"value";s:0:"";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:36;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:19;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:27:"Variable name was expected.";i:1;s:1:" ";i:2;i:37;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET @idx := 1;\nSELECT @idx, @`idx`, @ ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET @idx := 1;\nSELECT @idx, @`idx`, @ ", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 8, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@`idx`", + "value": "idx", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Variable name was expected.", + " ", + 37, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolErr3.out b/tests/data/lexer/lexSymbolErr3.out index 810fd372a..d7bf41786 100644 --- a/tests/data/lexer/lexSymbolErr3.out +++ b/tests/data/lexer/lexSymbolErr3.out @@ -1 +1,84 @@ -a:4:{s:5:"query";s:11:"SELECT `idx";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:11:"SELECT `idx";s:3:"len";i:11;s:4:"last";i:12;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:4:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`idx";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:4;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:28:"Ending quote ` was expected.";i:1;s:0:"";i:2;i:11;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT `idx", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT `idx", + "len": 11, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Ending quote ` was expected.", + "", + 11, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser.out b/tests/data/lexer/lexSymbolUser.out deleted file mode 100644 index bf181091a..000000000 --- a/tests/data/lexer/lexSymbolUser.out +++ /dev/null @@ -1 +0,0 @@ -a:4:{s:5:"query";s:55:"CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:55:"CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';";s:3:"len";i:55;s:4:"last";i:55;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"USER";s:5:"value";s:4:"USER";s:7:"keyword";s:4:"USER";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"'user'@'hostname'";s:5:"value";s:13:"user@hostname";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:4;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"IDENTIFIED";s:5:"value";s:10:"IDENTIFIED";s:7:"keyword";s:10:"IDENTIFIED";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:30;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"BY";s:5:"value";s:2:"BY";s:7:"keyword";s:2:"BY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:41;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"'password'";s:5:"value";s:8:"password";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:44;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:54;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser.in b/tests/data/lexer/lexSymbolUser1.in similarity index 100% rename from tests/data/lexer/lexSymbolUser.in rename to tests/data/lexer/lexSymbolUser1.in diff --git a/tests/data/lexer/lexSymbolUser1.out b/tests/data/lexer/lexSymbolUser1.out new file mode 100644 index 000000000..27c643d8c --- /dev/null +++ b/tests/data/lexer/lexSymbolUser1.out @@ -0,0 +1,178 @@ +{ + "query": "CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'hostname'", + "value": "user@hostname", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED", + "value": "IDENTIFIED", + "keyword": "IDENTIFIED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BY", + "value": "BY", + "keyword": "BY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'password'", + "value": "password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser2.in b/tests/data/lexer/lexSymbolUser2.in new file mode 100644 index 000000000..0a22e41a5 --- /dev/null +++ b/tests/data/lexer/lexSymbolUser2.in @@ -0,0 +1 @@ +ALTER USER 'user'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password'; \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser2.out b/tests/data/lexer/lexSymbolUser2.out new file mode 100644 index 000000000..1f1e7518f --- /dev/null +++ b/tests/data/lexer/lexSymbolUser2.out @@ -0,0 +1,202 @@ +{ + "query": "ALTER USER 'user'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password';", + "len": 81, + "last": 81, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'hostname'", + "value": "user@hostname", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED WITH", + "value": "IDENTIFIED WITH", + "keyword": "IDENTIFIED WITH", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql_native_password", + "value": "mysql_native_password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BY", + "value": "BY", + "keyword": "BY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'password'", + "value": "password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser3.in b/tests/data/lexer/lexSymbolUser3.in new file mode 100644 index 000000000..a411c91fa --- /dev/null +++ b/tests/data/lexer/lexSymbolUser3.in @@ -0,0 +1 @@ +ALTER USER 'user'@'hostname' WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100; \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser3.out b/tests/data/lexer/lexSymbolUser3.out new file mode 100644 index 000000000..bfe497f7b --- /dev/null +++ b/tests/data/lexer/lexSymbolUser3.out @@ -0,0 +1,222 @@ +{ + "query": "ALTER USER 'user'@'hostname' WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user'@'hostname' WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100;", + "len": 84, + "last": 84, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'hostname'", + "value": "user@hostname", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_QUERIES_PER_HOUR", + "value": "MAX_QUERIES_PER_HOUR", + "keyword": "MAX_QUERIES_PER_HOUR", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "500", + "value": 500, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_UPDATES_PER_HOUR", + "value": "MAX_UPDATES_PER_HOUR", + "keyword": "MAX_UPDATES_PER_HOUR", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "100", + "value": 100, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser4_mariadb_100400.in b/tests/data/lexer/lexSymbolUser4_mariadb_100400.in new file mode 100644 index 000000000..4357161a2 --- /dev/null +++ b/tests/data/lexer/lexSymbolUser4_mariadb_100400.in @@ -0,0 +1 @@ +ALTER USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password'; \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser4_mariadb_100400.out b/tests/data/lexer/lexSymbolUser4_mariadb_100400.out new file mode 100644 index 000000000..9edfdc2d2 --- /dev/null +++ b/tests/data/lexer/lexSymbolUser4_mariadb_100400.out @@ -0,0 +1,202 @@ +{ + "query": "ALTER USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password';", + "len": 80, + "last": 80, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'hostname'", + "value": "user@hostname", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED VIA", + "value": "IDENTIFIED VIA", + "keyword": "IDENTIFIED VIA", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql_native_password", + "value": "mysql_native_password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BY", + "value": "BY", + "keyword": "BY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'password'", + "value": "password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser5_mariadb_100400.in b/tests/data/lexer/lexSymbolUser5_mariadb_100400.in new file mode 100644 index 000000000..64dacdcd5 --- /dev/null +++ b/tests/data/lexer/lexSymbolUser5_mariadb_100400.in @@ -0,0 +1 @@ +CREATE USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password'; \ No newline at end of file diff --git a/tests/data/lexer/lexSymbolUser5_mariadb_100400.out b/tests/data/lexer/lexSymbolUser5_mariadb_100400.out new file mode 100644 index 000000000..c2c4ba9d2 --- /dev/null +++ b/tests/data/lexer/lexSymbolUser5_mariadb_100400.out @@ -0,0 +1,202 @@ +{ + "query": "CREATE USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password';", + "len": 81, + "last": 81, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'hostname'", + "value": "user@hostname", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED VIA", + "value": "IDENTIFIED VIA", + "keyword": "IDENTIFIED VIA", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql_native_password", + "value": "mysql_native_password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BY", + "value": "BY", + "keyword": "BY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'password'", + "value": "password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexUtf8.out b/tests/data/lexer/lexUtf8.out index a9d396fa5..3c50e4693 100644 --- a/tests/data/lexer/lexUtf8.out +++ b/tests/data/lexer/lexUtf8.out @@ -1 +1,126 @@ -a:4:{s:5:"query";s:20:"select * from école";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";O:30:"PhpMyAdmin\SqlParser\UtfString":5:{s:3:"str";s:20:"select * from école";s:7:"byteIdx";i:19;s:7:"charIdx";i:18;s:7:"byteLen";i:20;s:7:"charLen";i:19;}s:3:"len";i:19;s:4:"last";i:19;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:8:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"from";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"école";s:5:"value";s:6:"école";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:8;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "select * from école", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": { + "@type": "PhpMyAdmin\\SqlParser\\UtfString", + "str": "select * from école" + }, + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@4" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "école", + "value": "école", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexWhitespace.out b/tests/data/lexer/lexWhitespace.out index ee4bc9012..11ca65a25 100644 --- a/tests/data/lexer/lexWhitespace.out +++ b/tests/data/lexer/lexWhitespace.out @@ -1,28 +1,99 @@ -a:4:{s:5:"query";s:79:" - - -SELECT - 'w h i t e s p a c e' - - - - - ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:79:" - - -SELECT - 'w h i t e s p a c e' - - - - - ";s:3:"len";i:79;s:4:"last";i:79;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:6:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:22:"'w h i t e s p a c e'";s:5:"value";s:20:"w h i t e s p a c e";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:18;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:39:" - - - - - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:6;s:3:"idx";i:0;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";N;s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 6, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \n\t\t", + "value": " ", + "keyword": null, + "type": { + "@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": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n\t\t\n\t\t\t\n \n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/lexer/lexWildcardThenComment.in b/tests/data/lexer/lexWildcardThenComment.in new file mode 100644 index 000000000..1f9e06b25 --- /dev/null +++ b/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/tests/data/lexer/lexWildcardThenComment.out b/tests/data/lexer/lexWildcardThenComment.out new file mode 100644 index 000000000..022bde98f --- /dev/null +++ b/tests/data/lexer/lexWildcardThenComment.out @@ -0,0 +1,1240 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 109, + "idx": 0, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*\ncomment\non\nmultiple\nlines\n*/", + "value": "/*\ncomment\non\nmultiple\nlines\n*/", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* foo */", + "value": "/* foo */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* foo */", + "value": "/* foo */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*bar*/", + "value": "/*bar*/", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*with comment*/", + "value": "/*with comment*/", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "star_field", + "value": "star_field", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "@64" + }, + "flags": 2, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*with comment*/", + "value": "/*with comment*/", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "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": { + "@type": "@9" + }, + "flags": 2, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* operator */", + "value": "/* operator */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* operator */", + "value": "/* operator */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* start wildcard */", + "value": "/* start wildcard */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* end wildcard */", + "value": "/* end wildcard */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "@64" + }, + "flags": 2, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*a*/", + "value": "/*a*/", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*b*/", + "value": "/*b*/", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": { + "@type": "@64" + }, + "flags": 2, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- invalid queries", + "value": "-- invalid queries", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 4, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* SELECT */", + "value": "/* SELECT */", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/misc/parseParameter.out b/tests/data/misc/parseParameter.out index d1dd350e1..f384dae51 100644 --- a/tests/data/misc/parseParameter.out +++ b/tests/data/misc/parseParameter.out @@ -1 +1,415 @@ -a:3:{s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:95:"INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (:firstname, :lastname, :email);";s:3:"len";i:95;s:4:"last";i:95;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:29:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`person`";s:5:"value";s:6:"person";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`firstname`";s:5:"value";s:9:"firstname";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`lastname`";s:5:"value";s:8:"lastname";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:35;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:45;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`email`";s:5:"value";s:5:"email";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:47;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:54;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:56;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:63;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:":firstname";s:5:"value";s:9:"firstname";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:16;s:8:"position";i:64;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:74;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:":lastname";s:5:"value";s:8:"lastname";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:16;s:8:"position";i:76;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:85;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:":email";s:5:"value";s:5:"email";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:16;s:8:"position";i:87;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:93;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:94;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:29;s:3:"idx";i:29;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:6;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"person";s:6:"column";N;s:4:"expr";s:8:"`person`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:3:{i:0;s:9:"firstname";i:1;s:8:"lastname";i:2;s:5:"email";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";a:1:{i:0;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:3:{i:0;s:10:":firstname";i:1;s:9:":lastname";i:2;s:6:":email";}s:6:"values";a:3:{i:0;s:9:"firstname";i:1;s:8:"lastname";i:2;s:5:"email";}}}s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:26;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (:firstname, :lastname, :email);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (:firstname, :lastname, :email);", + "len": 95, + "last": 95, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 29, + "idx": 29, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`person`", + "value": "person", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`firstname`", + "value": "firstname", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`lastname`", + "value": "lastname", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email`", + "value": "email", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":firstname", + "value": "firstname", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":lastname", + "value": "lastname", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":email", + "value": "email", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@34" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "person", + "column": null, + "expr": "`person`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "firstname", + "lastname", + "email" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + ":firstname", + ":lastname", + ":email" + ], + "values": [ + "firstname", + "lastname", + "email" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/misc/parseParameter2.in b/tests/data/misc/parseParameter2.in new file mode 100644 index 000000000..09efa6b03 --- /dev/null +++ b/tests/data/misc/parseParameter2.in @@ -0,0 +1 @@ +INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (?, ?, ?); \ No newline at end of file diff --git a/tests/data/misc/parseParameter2.out b/tests/data/misc/parseParameter2.out new file mode 100644 index 000000000..e0e7e382d --- /dev/null +++ b/tests/data/misc/parseParameter2.out @@ -0,0 +1,415 @@ +{ + "query": "INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (?, ?, ?);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (?, ?, ?);", + "len": 73, + "last": 73, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 29, + "idx": 29, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`person`", + "value": "person", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`firstname`", + "value": "firstname", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`lastname`", + "value": "lastname", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email`", + "value": "email", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "?", + "value": "?", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@34" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "person", + "column": null, + "expr": "`person`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "firstname", + "lastname", + "email" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "?", + "?", + "?" + ], + "values": [ + "?", + "?", + "?" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parse.out b/tests/data/parser/parse.out index 55617f66e..b31e35c83 100644 --- a/tests/data/parser/parse.out +++ b/tests/data/parser/parse.out @@ -1 +1,133 @@ -a:4:{s:5:"query";s:9:"SELECT 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:9:"SELECT 1;";s:3:"len";i:9;s:4:"last";i:9;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:2;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 1;", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parse2.out b/tests/data/parser/parse2.out index 337e6daca..62ef4b942 100644 --- a/tests/data/parser/parse2.out +++ b/tests/data/parser/parse2.out @@ -1 +1,280 @@ -a:4:{s:5:"query";s:24:"(SELECT 1);((SELECT 2));";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:24:"(SELECT 1);((SELECT 2));";s:3:"len";i:24;s:4:"last";i:24;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:1;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:10;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:11;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:12;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:20;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:21;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:22;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:23;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:2:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:4;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:5;s:4:"last";i:12;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "(SELECT 1);((SELECT 2));", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "(SELECT 1);((SELECT 2));", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 12 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter.out b/tests/data/parser/parseAlter.out index 646ea4e6c..b8bb36e37 100644 --- a/tests/data/parser/parseAlter.out +++ b/tests/data/parser/parseAlter.out @@ -1,7 +1,405 @@ -a:4:{s:5:"query";s:102:"ALTER TABLE `actor` - ADD PRIMARY KEY (`actor_id`), - ADD KEY `idx_actor_last_name` (`last_name`);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:102:"ALTER TABLE `actor` - ADD PRIMARY KEY (`actor_id`), - ADD KEY `idx_actor_last_name` (`last_name`);";s:3:"len";i:102;s:4:"last";i:102;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:26:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`actor`";s:5:"value";s:5:"actor";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ADD";s:5:"value";s:3:"ADD";s:7:"keyword";s:3:"ADD";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:24;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:28;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:52;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ADD";s:5:"value";s:3:"ADD";s:7:"keyword";s:3:"ADD";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:58;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:62;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:21:"`idx_actor_last_name`";s:5:"value";s:19:"idx_actor_last_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:66;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`last_name`";s:5:"value";s:9:"last_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:89;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:100;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:101;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:26;s:3:"idx";i:26;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"actor";s:6:"column";N;s:4:"expr";s:7:"`actor`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:2:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:3:"ADD";i:2;s:11:"PRIMARY KEY";}}s:5:"field";N;s:7:"unknown";a:3:{i:0;r:79;i:1;r:86;i:2;r:93;}}i:1;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:3:"ADD";i:2;s:3:"KEY";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:19:"idx_actor_last_name";s:4:"expr";s:21:"`idx_actor_last_name`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:3:{i:0;r:156;i:1;r:163;i:2;r:170;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:24;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "ALTER TABLE `actor`\n ADD PRIMARY KEY (`actor_id`),\n ADD KEY `idx_actor_last_name` (`last_name`);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 26, + "idx": 26, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx_actor_last_name`", + "value": "idx_actor_last_name", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "PRIMARY KEY" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": { + "name": "KEY", + "equals": false, + "expr": "`idx_actor_last_name`", + "value": "idx_actor_last_name" + } + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter10.out b/tests/data/parser/parseAlter10.out index 20966ccc5..ae6e03608 100644 --- a/tests/data/parser/parseAlter10.out +++ b/tests/data/parser/parseAlter10.out @@ -1 +1,358 @@ -a:4:{s:5:"query";s:81:"ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:81:"ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;";s:3:"len";i:81;s:4:"last";i:81;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:22:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`database`";s:5:"value";s:8:"database";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`table`";s:5:"value";s:5:"table";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"MODIFY";s:5:"value";s:6:"MODIFY";s:7:"keyword";s:6:"MODIFY";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:31;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`field`";s:5:"value";s:5:"field";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:38;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:46;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:49;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:52;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:54;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:69;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:80;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:22;s:3:"idx";i:22;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:8:"database";s:5:"table";s:5:"table";s:6:"column";N;s:4:"expr";s:18:"`database`.`table`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"MODIFY";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"field";s:4:"expr";s:7:"`field`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:8:{i:0;r:93;i:1;r:100;i:2;r:107;i:3;r:114;i:4;r:121;i:5;r:128;i:6;r:135;i:7;r:142;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:20;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;", + "len": 81, + "last": 81, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 22, + "idx": 22, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`database`", + "value": "database", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table`", + "value": "table", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field`", + "value": "field", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "database", + "table": "table", + "column": null, + "expr": "`database`.`table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "field", + "expr": "`field`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter11.in b/tests/data/parser/parseAlter11.in new file mode 100644 index 000000000..2af686e64 --- /dev/null +++ b/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/tests/data/parser/parseAlter11.out b/tests/data/parser/parseAlter11.out new file mode 100644 index 000000000..bee239ec7 --- /dev/null +++ b/tests/data/parser/parseAlter11.out @@ -0,0 +1,398 @@ +{ + "query": "ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3') NOT NULL AFTER last_update", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 26, + "idx": 26, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_update2`", + "value": "last_update2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value1'", + "value": "value1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value2'", + "value": "value2", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value3'", + "value": "value3", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_update", + "value": "last_update", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "last_update2", + "expr": "`last_update2`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter12.in b/tests/data/parser/parseAlter12.in new file mode 100644 index 000000000..8e3adead5 --- /dev/null +++ b/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/tests/data/parser/parseAlter12.out b/tests/data/parser/parseAlter12.out new file mode 100644 index 000000000..5211f83a7 --- /dev/null +++ b/tests/data/parser/parseAlter12.out @@ -0,0 +1,280 @@ +{ + "query": "ALTER TABLE actor ALTER last_update2 SET DEFAULT 'value1';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE actor ALTER last_update2 SET DEFAULT 'value1';", + "len": 58, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_update2", + "value": "last_update2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value1'", + "value": "value1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ALTER" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "last_update2", + "expr": "last_update2", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter13.in b/tests/data/parser/parseAlter13.in new file mode 100644 index 000000000..c995c7362 --- /dev/null +++ b/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/tests/data/parser/parseAlter13.out b/tests/data/parser/parseAlter13.out new file mode 100644 index 000000000..91b8d4423 --- /dev/null +++ b/tests/data/parser/parseAlter13.out @@ -0,0 +1,315 @@ +{ + "query": "ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3')", + "len": 71, + "last": 71, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_update2`", + "value": "last_update2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value1'", + "value": "value1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value2'", + "value": "value2", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value3'", + "value": "value3", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "last_update2", + "expr": "`last_update2`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter14.in b/tests/data/parser/parseAlter14.in new file mode 100644 index 000000000..8351f81a0 --- /dev/null +++ b/tests/data/parser/parseAlter14.in @@ -0,0 +1 @@ +ALTER TABLE `table` ADD UNIQUE KEY `functional_index` (`field1`,`field2`, (IFNULL(`field3`,0))); diff --git a/tests/data/parser/parseAlter14.out b/tests/data/parser/parseAlter14.out new file mode 100644 index 000000000..f767bb14c --- /dev/null +++ b/tests/data/parser/parseAlter14.out @@ -0,0 +1,468 @@ +{ + "query": "ALTER TABLE `table` ADD UNIQUE KEY `functional_index` (`field1`,`field2`, (IFNULL(`field3`,0)));\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `table` ADD UNIQUE KEY `functional_index` (`field1`,`field2`, (IFNULL(`field3`,0)));\n", + "len": 97, + "last": 97, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 30, + "idx": 30, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table`", + "value": "table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE KEY", + "value": "UNIQUE KEY", + "keyword": "UNIQUE KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`functional_index`", + "value": "functional_index", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field1`", + "value": "field1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field2`", + "value": "field2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IFNULL", + "value": "IFNULL", + "keyword": "IFNULL", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field3`", + "value": "field3", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table", + "column": null, + "expr": "`table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "UNIQUE KEY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "functional_index", + "expr": "`functional_index`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@17" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 27 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter2.out b/tests/data/parser/parseAlter2.out index daf4ec070..1bb1a91ad 100644 --- a/tests/data/parser/parseAlter2.out +++ b/tests/data/parser/parseAlter2.out @@ -1,4 +1,411 @@ -a:4:{s:5:"query";s:84:"ALTER /* */ TABLE /* */ table -CONVERT /* */ TO /* */ CHARACTER /* */ SET /* */ utf8;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:84:"ALTER /* */ TABLE /* */ table -CONVERT /* */ TO /* */ CHARACTER /* */ SET /* */ utf8;";s:3:"len";i:84;s:4:"last";i:84;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:29:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"table";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CONVERT";s:5:"value";s:7:"CONVERT";s:7:"keyword";s:7:"CONVERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:44;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:47;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"CHARACTER";s:5:"value";s:9:"CHARACTER";s:7:"keyword";s:9:"CHARACTER";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:53;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:63;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:69;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:73;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:78;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"utf8";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:79;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:83;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:29;s:3:"idx";i:29;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";N;s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:2:"TO";}}s:5:"field";N;s:7:"unknown";a:3:{i:0;r:135;i:1;r:142;i:2;r:156;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:3;s:5:"TABLE";i:12;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:27;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:35:"This option conflicts with "TABLE".";i:1;r:65;i:2;i:0;}i:1;a:3:{i:0;s:76:"A new statement was found, but no delimiter between it and the previous one.";i:1;r:163;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "ALTER /* */ TABLE /* */ table\nCONVERT /* */ TO /* */ CHARACTER /* */ SET /* */ utf8;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER /* */ TABLE /* */ table\nCONVERT /* */ TO /* */ CHARACTER /* */ SET /* */ utf8;", + "len": 84, + "last": 84, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 29, + "idx": 29, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONVERT", + "value": "CONVERT", + "keyword": "CONVERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER", + "value": "CHARACTER", + "keyword": "CHARACTER", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@34" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": null, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "TO", + "equals": false, + "expr": "CHARACTER", + "value": "CHARACTER" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE", + "14": "TABLE" + } + }, + "first": 0, + "last": 27 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"TABLE\".", + { + "@type": "@13" + }, + 0 + ], + [ + "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/tests/data/parser/parseAlter3.out b/tests/data/parser/parseAlter3.out index c336533d6..cc3d0a10a 100644 --- a/tests/data/parser/parseAlter3.out +++ b/tests/data/parser/parseAlter3.out @@ -1,7 +1,673 @@ -a:4:{s:5:"query";s:153:"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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:153:"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";s:3:"len";i:153;s:4:"last";i:153;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:48:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`tbl`";s:5:"value";s:3:"tbl";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:37;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:65;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:81;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:87;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`tbl`";s:5:"value";s:3:"tbl";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:93;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:99;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:105;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`field_1`";s:5:"value";s:7:"field_1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:106;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:115;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`field_2`";s:5:"value";s:7:"field_2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:116;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:126;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:129;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:131;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:133;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:134;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:135;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:136;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:144;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:145;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:48;s:3:"idx";i:48;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"tbl";s:6:"column";N;s:4:"expr";s:5:"`tbl`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"CHANGE";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:3:"uid";s:4:"expr";s:5:"`uid`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:15:{i:0;r:79;i:1;r:86;i:2;r:93;i:3;r:100;i:4;r:107;i:5;r:114;i:6;r:121;i:7;r:128;i:8;r:135;i:9;r:142;i:10;r:149;i:11;r:156;i:12;r:163;i:13;r:170;i:14;r:177;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:47;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:76:"A new statement was found, but no delimiter between it and the previous one.";i:1;r:184;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 48, + "idx": 48, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_1`", + "value": "field_1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_2`", + "value": "field_2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": null, + "expr": "`tbl`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "uid", + "expr": "`uid`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@32" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter4.out b/tests/data/parser/parseAlter4.out index 41a635c9b..7630a5f83 100644 --- a/tests/data/parser/parseAlter4.out +++ b/tests/data/parser/parseAlter4.out @@ -1 +1,208 @@ -a:4:{s:5:"query";s:48:"ALTER TABLE my_table COMMENT='Comment of table';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:48:"ALTER TABLE my_table COMMENT='Comment of table';";s:3:"len";i:48;s:4:"last";i:48;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"my_table";s:5:"value";s:8:"my_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COMMENT";s:5:"value";s:7:"COMMENT";s:7:"keyword";s:7:"COMMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:28;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"'Comment of table'";s:5:"value";s:16:"Comment of table";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:29;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:47;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"my_table";s:6:"column";N;s:4:"expr";s:8:"my_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:7:"COMMENT";s:6:"equals";b:1;s:4:"expr";s:18:"'Comment of table'";s:5:"value";s:16:"Comment of table";}}}s:5:"field";N;s:7:"unknown";a:0:{}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "ALTER TABLE my_table COMMENT='Comment of table';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE my_table COMMENT='Comment of table';", + "len": 48, + "last": 48, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Comment of table'", + "value": "Comment of table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_table", + "column": null, + "expr": "my_table", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": true, + "expr": "'Comment of table'", + "value": "Comment of table" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter5.out b/tests/data/parser/parseAlter5.out index 5d36504e1..6edcc7e77 100644 --- a/tests/data/parser/parseAlter5.out +++ b/tests/data/parser/parseAlter5.out @@ -1 +1,219 @@ -a:4:{s:5:"query";s:43:"ALTER DATABASE `abc` CHARACTER SET = 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:43:"ALTER DATABASE `abc` CHARACTER SET = 'utf8'";s:3:"len";i:43;s:4:"last";i:43;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:12:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DATABASE";s:5:"value";s:8:"DATABASE";s:7:"keyword";s:8:"DATABASE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`abc`";s:5:"value";s:3:"abc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:15;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:35;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:37;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:12;s:3:"idx";i:12;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"abc";s:6:"column";N;s:4:"expr";s:5:"`abc`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"CHARACTER SET";s:6:"equals";b:1;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:5:"field";N;s:7:"unknown";a:0:{}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:8:"DATABASE";}}s:5:"first";i:0;s:4:"last";i:11;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "ALTER DATABASE `abc` CHARACTER SET = 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER DATABASE `abc` CHARACTER SET = 'utf8'", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`abc`", + "value": "abc", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "abc", + "column": null, + "expr": "`abc`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "CHARACTER SET", + "equals": true, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "DATABASE" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter6.out b/tests/data/parser/parseAlter6.out index c78455a31..8400dd63d 100644 --- a/tests/data/parser/parseAlter6.out +++ b/tests/data/parser/parseAlter6.out @@ -1 +1,279 @@ -a:4:{s:5:"query";s:39:"ALTER VIEW `abc` AS SELECT `a` FROM `b`";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:39:"ALTER VIEW `abc` AS SELECT `a` FROM `b`";s:3:"len";i:39;s:4:"last";i:39;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:16:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"VIEW";s:5:"value";s:4:"VIEW";s:7:"keyword";s:4:"VIEW";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`abc`";s:5:"value";s:3:"abc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`b`";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:36;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:16;s:3:"idx";i:16;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"abc";s:6:"column";N;s:4:"expr";s:5:"`abc`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:2:"AS";}}s:5:"field";N;s:7:"unknown";a:8:{i:0;r:58;i:1;r:65;i:2;r:72;i:3;r:79;i:4;r:86;i:5;r:93;i:6;r:100;i:7;r:107;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:4:"VIEW";}}s:5:"first";i:0;s:4:"last";i:15;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "ALTER VIEW `abc` AS SELECT `a` FROM `b`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER VIEW `abc` AS SELECT `a` FROM `b`", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`abc`", + "value": "abc", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "abc", + "column": null, + "expr": "`abc`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "AS" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "VIEW" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter7.out b/tests/data/parser/parseAlter7.out index 3dcd6f012..fa7308a60 100644 --- a/tests/data/parser/parseAlter7.out +++ b/tests/data/parser/parseAlter7.out @@ -1 +1,665 @@ -a:4:{s:5:"query";s:135:"ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:135:"ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL";s:3:"len";i:135;s:4:"last";i:135;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:43:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`tbl`";s:5:"value";s:3:"tbl";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:37;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:65;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:79;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`field_1`";s:5:"value";s:7:"field_1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:88;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`field_2`";s:5:"value";s:7:"field_2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:98;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:108;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:111;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:113;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:115;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:116;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:117;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:118;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:126;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:127;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:43;s:3:"idx";i:43;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"tbl";s:6:"column";N;s:4:"expr";s:5:"`tbl`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:2:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"CHANGE";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:3:"uid";s:4:"expr";s:5:"`uid`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:14:{i:0;r:79;i:1;r:86;i:2;r:93;i:3;r:100;i:4;r:107;i:5;r:114;i:6;r:121;i:7;r:128;i:8;r:135;i:9;r:142;i:10;r:149;i:11;r:156;i:12;r:163;i:13;r:170;}}i:1;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"CHANGE";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:7:"field_1";s:4:"expr";s:9:"`field_1`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:12:{i:0;r:219;i:1;r:226;i:2;r:233;i:3;r:240;i:4;r:247;i:5;r:254;i:6;r:261;i:7;r:268;i:8;r:275;i:9;r:282;i:10;r:289;i:11;r:296;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:42;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 43, + "idx": 43, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_1`", + "value": "field_1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_2`", + "value": "field_2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": null, + "expr": "`tbl`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "uid", + "expr": "`uid`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "field_1", + "expr": "`field_1`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + }, + { + "@type": "@45" + }, + { + "@type": "@46" + }, + { + "@type": "@47" + }, + { + "@type": "@48" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 42 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter8.out b/tests/data/parser/parseAlter8.out index 8766a08ab..beec8503c 100644 --- a/tests/data/parser/parseAlter8.out +++ b/tests/data/parser/parseAlter8.out @@ -1 +1,394 @@ -a:4:{s:5:"query";s:82:"ALTER TABLE `api_tab_user` CHANGE `rank_id` `rank_id` INT(4) NOT NULL DEFAULT '4';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:82:"ALTER TABLE `api_tab_user` CHANGE `rank_id` `rank_id` INT(4) NOT NULL DEFAULT '4';";s:3:"len";i:82;s:4:"last";i:82;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"`api_tab_user`";s:5:"value";s:12:"api_tab_user";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`rank_id`";s:5:"value";s:7:"rank_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:34;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`rank_id`";s:5:"value";s:7:"rank_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:44;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:54;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:57;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"4";s:5:"value";i:4;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:58;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:59;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:61;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"'4'";s:5:"value";s:1:"4";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:78;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:81;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:24;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:12:"api_tab_user";s:6:"column";N;s:4:"expr";s:14:"`api_tab_user`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"CHANGE";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:7:"rank_id";s:4:"expr";s:9:"`rank_id`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:12:{i:0;r:79;i:1;r:86;i:2;r:93;i:3;r:100;i:4;r:107;i:5;r:114;i:6;r:121;i:7;r:128;i:8;r:135;i:9;r:142;i:10;r:149;i:11;r:156;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:22;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "ALTER TABLE `api_tab_user` CHANGE `rank_id` `rank_id` INT(4) NOT NULL DEFAULT '4';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`api_tab_user`", + "value": "api_tab_user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rank_id`", + "value": "rank_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rank_id`", + "value": "rank_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'4'", + "value": "4", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "api_tab_user", + "column": null, + "expr": "`api_tab_user`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "rank_id", + "expr": "`rank_id`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlter9.out b/tests/data/parser/parseAlter9.out index f59e4ff40..8b463cc5e 100644 --- a/tests/data/parser/parseAlter9.out +++ b/tests/data/parser/parseAlter9.out @@ -1 +1,471 @@ -a:4:{s:5:"query";s:142:"ALTER TABLE place CHANGE COLUMN plc_location_type gplc_location_type ENUM('LOCATION') CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:142:"ALTER TABLE place CHANGE COLUMN plc_location_type gplc_location_type ENUM('LOCATION') CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL;";s:3:"len";i:142;s:4:"last";i:142;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:30:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"place";s:5:"value";s:5:"place";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"COLUMN";s:5:"value";s:6:"COLUMN";s:7:"keyword";s:6:"COLUMN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"plc_location_type";s:5:"value";s:17:"plc_location_type";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"gplc_location_type";s:5:"value";s:18:"gplc_location_type";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"ENUM";s:5:"value";s:4:"ENUM";s:7:"keyword";s:4:"ENUM";s:4:"type";i:1;s:5:"flags";i:9;s:8:"position";i:69;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:73;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"'LOCATION'";s:5:"value";s:8:"LOCATION";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:74;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:84;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:86;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:100;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLLATE";s:5:"value";s:7:"COLLATE";s:7:"keyword";s:7:"COLLATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:107;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:114;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"'utf8_unicode_ci'";s:5:"value";s:15:"utf8_unicode_ci";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:115;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:132;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:133;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:141;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:30;s:3:"idx";i:30;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"place";s:6:"column";N;s:4:"expr";s:5:"place";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:6:"CHANGE";i:2;s:6:"COLUMN";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:17:"plc_location_type";s:4:"expr";s:17:"plc_location_type";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:16:{i:0;r:93;i:1;r:100;i:2;r:107;i:3;r:114;i:4;r:121;i:5;r:128;i:6;r:135;i:7;r:142;i:8;r:149;i:9;r:156;i:10;r:163;i:11;r:170;i:12;r:177;i:13;r:184;i:14;r:191;i:15;r:198;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:28;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 30, + "idx": 30, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "place", + "value": "place", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "plc_location_type", + "value": "plc_location_type", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gplc_location_type", + "value": "gplc_location_type", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'LOCATION'", + "value": "LOCATION", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 1, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8_unicode_ci'", + "value": "utf8_unicode_ci", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 1, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@36" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "place", + "column": null, + "expr": "place", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE", + "2": "COLUMN" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "plc_location_type", + "expr": "plc_location_type", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 28 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterErr.out b/tests/data/parser/parseAlterErr.out index 060e5af74..924143736 100644 --- a/tests/data/parser/parseAlterErr.out +++ b/tests/data/parser/parseAlterErr.out @@ -1,4 +1,631 @@ -a:4:{s:5:"query";s:176:"-- 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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:176:"-- 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";s:3:"len";i:176;s:4:"last";i:176;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:44:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:41:"-- missing comma between alter operations";s:5:"value";s:41:"-- missing comma between alter operations";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`tbl`";s:5:"value";s:3:"tbl";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:54;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:60;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:67;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`uid`";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:73;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:78;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:79;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:82;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:83;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:84;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:87;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:98;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:107;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:121;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:122;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:128;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`field_1`";s:5:"value";s:7:"field_1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:129;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:138;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`field_2`";s:5:"value";s:7:"field_2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:139;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:149;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:152;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:153;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:154;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:156;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:157;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:158;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"UNSIGNED";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:159;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:167;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:168;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:44;s:3:"idx";i:44;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"tbl";s:6:"column";N;s:4:"expr";s:5:"`tbl`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"CHANGE";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:3:"uid";s:4:"expr";s:5:"`uid`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:15:{i:0;r:93;i:1;r:100;i:2;r:107;i:3;r:114;i:4;r:121;i:5;r:128;i:6;r:135;i:7;r:142;i:8;r:149;i:9;r:156;i:10;r:163;i:11;r:170;i:12;r:177;i:13;r:184;i:14;r:191;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:43;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:52:"Missing comma before start of a new alter operation.";i:1;r:198;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 44, + "idx": 44, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing comma between alter operations", + "value": "-- missing comma between alter operations", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@7" + }, + "flags": 11, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@7" + }, + "flags": 7, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_1`", + "value": "field_1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_2`", + "value": "field_2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@7" + }, + "flags": 11, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 16, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@7" + }, + "flags": 7, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": null, + "expr": "`tbl`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "uid", + "expr": "`uid`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 43 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Missing comma before start of a new alter operation.", + { + "@type": "@35" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterErr2.out b/tests/data/parser/parseAlterErr2.out index ea03efbb6..5300c5cb7 100644 --- a/tests/data/parser/parseAlterErr2.out +++ b/tests/data/parser/parseAlterErr2.out @@ -1,7 +1,546 @@ -a:4:{s:5:"query";s:148:"-- missing comma between alter operations -ALTER TABLE tb_foo CHANGE inmsg inmsg date NULL AFTER outmsg2 CHANGE inmsg2 inmsg2 time NULL AFTER inmsg; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:148:"-- missing comma between alter operations -ALTER TABLE tb_foo CHANGE inmsg inmsg date NULL AFTER outmsg2 CHANGE inmsg2 inmsg2 time NULL AFTER inmsg; -";s:3:"len";i:148;s:4:"last";i:148;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:38:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:41:"-- missing comma between alter operations";s:5:"value";s:41:"-- missing comma between alter operations";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"tb_foo";s:5:"value";s:6:"tb_foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:54;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:61;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"inmsg";s:5:"value";s:5:"inmsg";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:68;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:73;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"inmsg";s:5:"value";s:5:"inmsg";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:74;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"date";s:5:"value";s:4:"date";s:7:"keyword";s:4:"DATE";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:80;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:85;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"AFTER";s:5:"value";s:5:"AFTER";s:7:"keyword";s:5:"AFTER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:90;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"outmsg2";s:5:"value";s:7:"outmsg2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:96;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:103;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CHANGE";s:5:"value";s:6:"CHANGE";s:7:"keyword";s:6:"CHANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:104;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"inmsg2";s:5:"value";s:6:"inmsg2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:111;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:117;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"inmsg2";s:5:"value";s:6:"inmsg2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:118;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"time";s:5:"value";s:4:"time";s:7:"keyword";s:4:"TIME";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:125;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:130;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:134;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"AFTER";s:5:"value";s:5:"AFTER";s:7:"keyword";s:5:"AFTER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:135;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:140;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"inmsg";s:5:"value";s:5:"inmsg";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:141;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:146;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:147;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:38;s:3:"idx";i:38;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"tb_foo";s:6:"column";N;s:4:"expr";s:6:"tb_foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"CHANGE";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"inmsg";s:4:"expr";s:5:"inmsg";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:10:{i:0;r:93;i:1;r:100;i:2;r:107;i:3;r:114;i:4;r:121;i:5;r:128;i:6;r:135;i:7;r:142;i:8;r:149;i:9;r:156;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:35;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:52:"Missing comma before start of a new alter operation.";i:1;r:163;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 38, + "idx": 38, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing comma between alter operations", + "value": "-- missing comma between alter operations", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tb_foo", + "value": "tb_foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg", + "value": "inmsg", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg", + "value": "inmsg", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "date", + "value": "date", + "keyword": "DATE", + "type": { + "@type": "@7" + }, + "flags": 41, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "outmsg2", + "value": "outmsg2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg2", + "value": "inmsg2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg2", + "value": "inmsg2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time", + "value": "time", + "keyword": "TIME", + "type": { + "@type": "@7" + }, + "flags": 41, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg", + "value": "inmsg", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@42" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tb_foo", + "column": null, + "expr": "tb_foo", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "inmsg", + "expr": "inmsg", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 35 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Missing comma before start of a new alter operation.", + { + "@type": "@28" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterErr3.out b/tests/data/parser/parseAlterErr3.out index 9f5e434d1..fbbb20d41 100644 --- a/tests/data/parser/parseAlterErr3.out +++ b/tests/data/parser/parseAlterErr3.out @@ -1,7 +1,393 @@ -a:4:{s:5:"query";s:124:"-- missing comma between alter operations -ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:124:"-- missing comma between alter operations -ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY; -";s:3:"len";i:124;s:4:"last";i:124;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:25:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:41:"-- missing comma between alter operations";s:5:"value";s:41:"-- missing comma between alter operations";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"ALTER";s:5:"value";s:5:"ALTER";s:7:"keyword";s:5:"ALTER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`database`";s:5:"value";s:8:"database";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:54;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:64;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`table`";s:5:"value";s:5:"table";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:65;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"MODIFY";s:5:"value";s:6:"MODIFY";s:7:"keyword";s:6:"MODIFY";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:73;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`field`";s:5:"value";s:5:"field";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:80;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:88;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:91;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:92;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:94;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:96;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:111;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:122;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:123;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:25;s:3:"idx";i:25;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\AlterStatement":5:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:8:"database";s:5:"table";s:5:"table";s:6:"column";N;s:4:"expr";s:18:"`database`.`table`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"altered";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\AlterOperation":3:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"MODIFY";}}s:5:"field";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"field";s:4:"expr";s:7:"`field`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"unknown";a:8:{i:0;r:107;i:1;r:114;i:2;r:121;i:3;r:128;i:4;r:135;i:5;r:142;i:6;r:149;i:7;r:156;}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:22;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "-- missing comma between alter operations\nALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing comma between alter operations", + "value": "-- missing comma between alter operations", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`database`", + "value": "database", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table`", + "value": "table", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field`", + "value": "field", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@7" + }, + "flags": 11, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@7" + }, + "flags": 23, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "database", + "table": "table", + "column": null, + "expr": "`database`.`table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "field", + "expr": "`field`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterErr4.in b/tests/data/parser/parseAlterErr4.in new file mode 100644 index 000000000..7d5229b51 --- /dev/null +++ b/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/tests/data/parser/parseAlterErr4.out b/tests/data/parser/parseAlterErr4.out new file mode 100644 index 000000000..b22ae8c01 --- /dev/null +++ b/tests/data/parser/parseAlterErr4.out @@ -0,0 +1,290 @@ +{ + "query": "ALTER TABLE actor ALTER last_update2 SET DEFAULT value1';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE actor ALTER last_update2 SET DEFAULT value1';", + "len": 57, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_update2", + "value": "last_update2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value1", + "value": "value1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "';", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ALTER" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "last_update2", + "expr": "last_update2", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@20" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [ + [ + "Ending quote ' was expected.", + "", + 57, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent.in b/tests/data/parser/parseAlterEvent.in new file mode 100644 index 000000000..1cec38740 --- /dev/null +++ b/tests/data/parser/parseAlterEvent.in @@ -0,0 +1 @@ +ALTER EVENT my_event ENABLE; diff --git a/tests/data/parser/parseAlterEvent.out b/tests/data/parser/parseAlterEvent.out new file mode 100644 index 000000000..94f5fa127 --- /dev/null +++ b/tests/data/parser/parseAlterEvent.out @@ -0,0 +1,188 @@ +{ + "query": "ALTER EVENT my_event ENABLE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ENABLE;\n", + "len": 29, + "last": 29, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENABLE", + "value": "ENABLE", + "keyword": "ENABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "ENABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent2.in b/tests/data/parser/parseAlterEvent2.in new file mode 100644 index 000000000..b9eebc08f --- /dev/null +++ b/tests/data/parser/parseAlterEvent2.in @@ -0,0 +1 @@ +ALTER EVENT my_event DISABLE; diff --git a/tests/data/parser/parseAlterEvent2.out b/tests/data/parser/parseAlterEvent2.out new file mode 100644 index 000000000..032dca61a --- /dev/null +++ b/tests/data/parser/parseAlterEvent2.out @@ -0,0 +1,188 @@ +{ + "query": "ALTER EVENT my_event DISABLE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event DISABLE;\n", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISABLE", + "value": "DISABLE", + "keyword": "DISABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "DISABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent3.in b/tests/data/parser/parseAlterEvent3.in new file mode 100644 index 000000000..3b755dab8 --- /dev/null +++ b/tests/data/parser/parseAlterEvent3.in @@ -0,0 +1 @@ +ALTER EVENT my_event DISABLE ON SLAVE; diff --git a/tests/data/parser/parseAlterEvent3.out b/tests/data/parser/parseAlterEvent3.out new file mode 100644 index 000000000..e7ebd5b72 --- /dev/null +++ b/tests/data/parser/parseAlterEvent3.out @@ -0,0 +1,188 @@ +{ + "query": "ALTER EVENT my_event DISABLE ON SLAVE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event DISABLE ON SLAVE;\n", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISABLE ON SLAVE", + "value": "DISABLE ON SLAVE", + "keyword": "DISABLE ON SLAVE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "DISABLE ON SLAVE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent4.in b/tests/data/parser/parseAlterEvent4.in new file mode 100644 index 000000000..e43b9cade --- /dev/null +++ b/tests/data/parser/parseAlterEvent4.in @@ -0,0 +1 @@ +ALTER EVENT my_event ON COMPLETION PRESERVE; diff --git a/tests/data/parser/parseAlterEvent4.out b/tests/data/parser/parseAlterEvent4.out new file mode 100644 index 000000000..3e4dd5f00 --- /dev/null +++ b/tests/data/parser/parseAlterEvent4.out @@ -0,0 +1,188 @@ +{ + "query": "ALTER EVENT my_event ON COMPLETION PRESERVE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON COMPLETION PRESERVE;\n", + "len": 45, + "last": 45, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON COMPLETION PRESERVE", + "value": "ON COMPLETION PRESERVE", + "keyword": "ON COMPLETION PRESERVE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "5": "ON COMPLETION PRESERVE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent5.in b/tests/data/parser/parseAlterEvent5.in new file mode 100644 index 000000000..81fc7484f --- /dev/null +++ b/tests/data/parser/parseAlterEvent5.in @@ -0,0 +1 @@ +ALTER EVENT my_event ON COMPLETION NOT PRESERVE; diff --git a/tests/data/parser/parseAlterEvent5.out b/tests/data/parser/parseAlterEvent5.out new file mode 100644 index 000000000..0d29b27b3 --- /dev/null +++ b/tests/data/parser/parseAlterEvent5.out @@ -0,0 +1,188 @@ +{ + "query": "ALTER EVENT my_event ON COMPLETION NOT PRESERVE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON COMPLETION NOT PRESERVE;\n", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON COMPLETION NOT PRESERVE", + "value": "ON COMPLETION NOT PRESERVE", + "keyword": "ON COMPLETION NOT PRESERVE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "5": "ON COMPLETION NOT PRESERVE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent6.in b/tests/data/parser/parseAlterEvent6.in new file mode 100644 index 000000000..63cf85f58 --- /dev/null +++ b/tests/data/parser/parseAlterEvent6.in @@ -0,0 +1 @@ +ALTER EVENT my_event RENAME TO my_new_event; diff --git a/tests/data/parser/parseAlterEvent6.out b/tests/data/parser/parseAlterEvent6.out new file mode 100644 index 000000000..103fac175 --- /dev/null +++ b/tests/data/parser/parseAlterEvent6.out @@ -0,0 +1,247 @@ +{ + "query": "ALTER EVENT my_event RENAME TO my_new_event;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event RENAME TO my_new_event;\n", + "len": 45, + "last": 45, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_new_event", + "value": "my_new_event", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "RENAME", + "7": { + "name": "TO", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_new_event", + "column": null, + "expr": "my_new_event", + "alias": null, + "function": null, + "subquery": null + }, + "value": "my_new_event" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent7.in b/tests/data/parser/parseAlterEvent7.in new file mode 100644 index 000000000..bf03f1f64 --- /dev/null +++ b/tests/data/parser/parseAlterEvent7.in @@ -0,0 +1 @@ +ALTER EVENT my_event COMMENT 'This is an event'; diff --git a/tests/data/parser/parseAlterEvent7.out b/tests/data/parser/parseAlterEvent7.out new file mode 100644 index 000000000..d74581a21 --- /dev/null +++ b/tests/data/parser/parseAlterEvent7.out @@ -0,0 +1,217 @@ +{ + "query": "ALTER EVENT my_event COMMENT 'This is an event';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event COMMENT 'This is an event';\n", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'This is an event'", + "value": "This is an event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "9": { + "name": "COMMENT", + "equals": false, + "expr": "'This is an event'", + "value": "This is an event" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent8.in b/tests/data/parser/parseAlterEvent8.in new file mode 100644 index 000000000..021d5ffbe --- /dev/null +++ b/tests/data/parser/parseAlterEvent8.in @@ -0,0 +1,2 @@ +ALTER EVENT my_event DO + SELECT * FROM my_table; diff --git a/tests/data/parser/parseAlterEvent8.out b/tests/data/parser/parseAlterEvent8.out new file mode 100644 index 000000000..cc450ee82 --- /dev/null +++ b/tests/data/parser/parseAlterEvent8.out @@ -0,0 +1,303 @@ +{ + "query": "ALTER EVENT my_event DO\n SELECT * FROM my_table;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event DO\n SELECT * FROM my_table;\n", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DO", + "value": "DO", + "keyword": "DO", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "10": "DO" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEvent9.in b/tests/data/parser/parseAlterEvent9.in new file mode 100644 index 000000000..c3313a2d4 --- /dev/null +++ b/tests/data/parser/parseAlterEvent9.in @@ -0,0 +1,2 @@ +ALTER EVENT old_db.old_event RENAME TO new_db.new_event; +ALTER EVENT `old_db`.`old_event` RENAME TO `new_db`.`new_event`; diff --git a/tests/data/parser/parseAlterEvent9.out b/tests/data/parser/parseAlterEvent9.out new file mode 100644 index 000000000..3e23554c9 --- /dev/null +++ b/tests/data/parser/parseAlterEvent9.out @@ -0,0 +1,532 @@ +{ + "query": "ALTER EVENT old_db.old_event RENAME TO new_db.new_event;\nALTER EVENT `old_db`.`old_event` RENAME TO `new_db`.`new_event`;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT old_db.old_event RENAME TO new_db.new_event;\nALTER EVENT `old_db`.`old_event` RENAME TO `new_db`.`new_event`;\n", + "len": 122, + "last": 122, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 35, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old_db", + "value": "old_db", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old_event", + "value": "old_event", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_db", + "value": "new_db", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_event", + "value": "new_event", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`old_db`", + "value": "old_db", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`old_event`", + "value": "old_event", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`new_db`", + "value": "new_db", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 2, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`new_event`", + "value": "new_event", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 2, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "old_db", + "table": "old_event", + "column": null, + "expr": "old_db.old_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "RENAME", + "7": { + "name": "TO", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "new_db", + "table": "new_event", + "column": null, + "expr": "new_db.new_event", + "alias": null, + "function": null, + "subquery": null + }, + "value": "new_db.new_event" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "old_db", + "table": "old_event", + "column": null, + "expr": "`old_db`.`old_event`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "RENAME", + "7": { + "name": "TO", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "new_db", + "table": "new_event", + "column": null, + "expr": "`new_db`.`new_event`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`new_db`.`new_event`" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 16, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventComplete.in b/tests/data/parser/parseAlterEventComplete.in new file mode 100644 index 000000000..447acc15c --- /dev/null +++ b/tests/data/parser/parseAlterEventComplete.in @@ -0,0 +1,11 @@ +ALTER EVENT my_event + ON SCHEDULE + EVERY 2 WEEK + STARTS CURRENT_TIMESTAMP + INTERVAL 4 WEEK + ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY + ON COMPLETION NOT PRESERVE + RENAME TO my_complete_event + DISABLE + COMMENT 'String as a comment' + DO + SELECT * FROM my_table; diff --git a/tests/data/parser/parseAlterEventComplete.out b/tests/data/parser/parseAlterEventComplete.out new file mode 100644 index 000000000..b35e3ec13 --- /dev/null +++ b/tests/data/parser/parseAlterEventComplete.out @@ -0,0 +1,883 @@ +{ + "query": "ALTER EVENT my_event\n ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP + INTERVAL 4 WEEK\n ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY\n ON COMPLETION NOT PRESERVE\n RENAME TO my_complete_event\n DISABLE\n COMMENT 'String as a comment'\n DO\n SELECT * FROM my_table;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event\n ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP + INTERVAL 4 WEEK\n ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY\n ON COMPLETION NOT PRESERVE\n RENAME TO my_complete_event\n DISABLE\n COMMENT 'String as a comment'\n DO\n SELECT * FROM my_table;\n", + "len": 303, + "last": 303, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 64, + "idx": 64, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVERY", + "value": "EVERY", + "keyword": "EVERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STARTS", + "value": "STARTS", + "keyword": "STARTS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENDS", + "value": "ENDS", + "keyword": "ENDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2099-12-30 23:12:01'", + "value": "2099-12-30 23:12:01", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 1, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAY", + "value": "DAY", + "keyword": "DAY", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON COMPLETION NOT PRESERVE", + "value": "ON COMPLETION NOT PRESERVE", + "keyword": "ON COMPLETION NOT PRESERVE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_complete_event", + "value": "my_complete_event", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISABLE", + "value": "DISABLE", + "keyword": "DISABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'String as a comment'", + "value": "String as a comment", + "keyword": null, + "type": { + "@type": "@36" + }, + "flags": 1, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DO", + "value": "DO", + "keyword": "DO", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 16, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@70" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "EVERY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2 WEEK", + "alias": null, + "function": null, + "subquery": null + }, + "value": "2 WEEK" + }, + "3": { + "name": "STARTS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP + INTERVAL 4 WEEK", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP + INTERVAL 4 WEEK" + }, + "4": { + "name": "ENDS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "2099-12-30 23:12:01", + "expr": "'2099-12-30 23:12:01'+ INTERVAL 1 DAY", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'2099-12-30 23:12:01'+ INTERVAL 1 DAY" + }, + "5": "ON COMPLETION NOT PRESERVE", + "6": "RENAME", + "7": { + "name": "TO", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_complete_event", + "column": null, + "expr": "my_complete_event", + "alias": null, + "function": null, + "subquery": null + }, + "value": "my_complete_event" + }, + "8": "DISABLE", + "9": { + "name": "COMMENT", + "equals": false, + "expr": "'String as a comment'", + "value": "String as a comment" + }, + "10": "DO" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@61" + }, + { + "@type": "@62" + }, + { + "@type": "@63" + }, + { + "@type": "@64" + }, + { + "@type": "@65" + }, + { + "@type": "@66" + }, + { + "@type": "@67" + }, + { + "@type": "@68" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 61 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventErr.in b/tests/data/parser/parseAlterEventErr.in new file mode 100644 index 000000000..126d4f0f6 --- /dev/null +++ b/tests/data/parser/parseAlterEventErr.in @@ -0,0 +1,2 @@ +-- No option in ALTER EVENT. +ALTER EVENT my_event; diff --git a/tests/data/parser/parseAlterEventErr.out b/tests/data/parser/parseAlterEventErr.out new file mode 100644 index 000000000..b87dadae7 --- /dev/null +++ b/tests/data/parser/parseAlterEventErr.out @@ -0,0 +1,177 @@ +{ + "query": "-- No option in ALTER EVENT.\nALTER EVENT my_event;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- No option in ALTER EVENT.\nALTER EVENT my_event;\n", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- No option in ALTER EVENT.", + "value": "-- No option in ALTER EVENT.", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleAt.in b/tests/data/parser/parseAlterEventOnScheduleAt.in new file mode 100644 index 000000000..752dec984 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleAt.in @@ -0,0 +1,2 @@ +ALTER EVENT my_event ON SCHEDULE + AT '2023-01-01 01:23:45'; diff --git a/tests/data/parser/parseAlterEventOnScheduleAt.out b/tests/data/parser/parseAlterEventOnScheduleAt.out new file mode 100644 index 000000000..d498109d8 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleAt.out @@ -0,0 +1,249 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n AT '2023-01-01 01:23:45';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n AT '2023-01-01 01:23:45';\n", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AT", + "value": "AT", + "keyword": "AT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2023-01-01 01:23:45'", + "value": "2023-01-01 01:23:45", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "AT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "2023-01-01 01:23:45", + "expr": "'2023-01-01 01:23:45'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'2023-01-01 01:23:45'" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleAt2.in b/tests/data/parser/parseAlterEventOnScheduleAt2.in new file mode 100644 index 000000000..a2cc06cb6 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleAt2.in @@ -0,0 +1,2 @@ +ALTER EVENT my_event ON SCHEDULE + AT '2023-01-01 01:23:45' + INTERVAL 1 DAY; diff --git a/tests/data/parser/parseAlterEventOnScheduleAt2.out b/tests/data/parser/parseAlterEventOnScheduleAt2.out new file mode 100644 index 000000000..ec21f2b45 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleAt2.out @@ -0,0 +1,341 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n AT '2023-01-01 01:23:45' + INTERVAL 1 DAY;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n AT '2023-01-01 01:23:45' + INTERVAL 1 DAY;\n", + "len": 78, + "last": 78, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 22, + "idx": 22, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AT", + "value": "AT", + "keyword": "AT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2023-01-01 01:23:45'", + "value": "2023-01-01 01:23:45", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAY", + "value": "DAY", + "keyword": "DAY", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "AT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "2023-01-01 01:23:45", + "expr": "'2023-01-01 01:23:45'+ INTERVAL 1 DAY", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'2023-01-01 01:23:45'+ INTERVAL 1 DAY" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery.in b/tests/data/parser/parseAlterEventOnScheduleEvery.in new file mode 100644 index 000000000..8878ed993 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery.in @@ -0,0 +1,2 @@ +ALTER EVENT my_event ON SCHEDULE + EVERY 2 WEEK; diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery.out b/tests/data/parser/parseAlterEventOnScheduleEvery.out new file mode 100644 index 000000000..086594bf7 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery.out @@ -0,0 +1,271 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK;\n", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVERY", + "value": "EVERY", + "keyword": "EVERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "EVERY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2 WEEK", + "alias": null, + "function": null, + "subquery": null + }, + "value": "2 WEEK" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery2.in b/tests/data/parser/parseAlterEventOnScheduleEvery2.in new file mode 100644 index 000000000..ef515afeb --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery2.in @@ -0,0 +1,2 @@ +ALTER EVENT my_event ON SCHEDULE + EVERY 2 WEEK + INTERVAL 4 HOUR; diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery2.out b/tests/data/parser/parseAlterEventOnScheduleEvery2.out new file mode 100644 index 000000000..c96c9a9f3 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery2.out @@ -0,0 +1,361 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK + INTERVAL 4 HOUR;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK + INTERVAL 4 HOUR;\n", + "len": 67, + "last": 67, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVERY", + "value": "EVERY", + "keyword": "EVERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HOUR", + "value": "HOUR", + "keyword": "HOUR", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "EVERY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2 WEEK + INTERVAL 4 HOUR", + "alias": null, + "function": null, + "subquery": null + }, + "value": "2 WEEK + INTERVAL 4 HOUR" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery3.in b/tests/data/parser/parseAlterEventOnScheduleEvery3.in new file mode 100644 index 000000000..3a34bcefd --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery3.in @@ -0,0 +1,3 @@ +ALTER EVENT my_event ON SCHEDULE + EVERY 2 WEEK + STARTS CURRENT_TIMESTAMP; diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery3.out b/tests/data/parser/parseAlterEventOnScheduleEvery3.out new file mode 100644 index 000000000..e03bc1a8d --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery3.out @@ -0,0 +1,330 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP;\n", + "len": 76, + "last": 76, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVERY", + "value": "EVERY", + "keyword": "EVERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STARTS", + "value": "STARTS", + "keyword": "STARTS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "EVERY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2 WEEK", + "alias": null, + "function": null, + "subquery": null + }, + "value": "2 WEEK" + }, + "3": { + "name": "STARTS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery4.in b/tests/data/parser/parseAlterEventOnScheduleEvery4.in new file mode 100644 index 000000000..5ff8f27c5 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery4.in @@ -0,0 +1,3 @@ +ALTER EVENT my_event ON SCHEDULE + EVERY 2 WEEK + STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR; diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery4.out b/tests/data/parser/parseAlterEventOnScheduleEvery4.out new file mode 100644 index 000000000..d1d3bf42e --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery4.out @@ -0,0 +1,420 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;\n", + "len": 94, + "last": 94, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 28, + "idx": 28, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVERY", + "value": "EVERY", + "keyword": "EVERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STARTS", + "value": "STARTS", + "keyword": "STARTS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HOUR", + "value": "HOUR", + "keyword": "HOUR", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "EVERY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2 WEEK", + "alias": null, + "function": null, + "subquery": null + }, + "value": "2 WEEK" + }, + "3": { + "name": "STARTS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP + INTERVAL 4 HOUR", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP + INTERVAL 4 HOUR" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery5.in b/tests/data/parser/parseAlterEventOnScheduleEvery5.in new file mode 100644 index 000000000..bbf65f7e4 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery5.in @@ -0,0 +1,4 @@ +ALTER EVENT my_event ON SCHEDULE + EVERY 2 WEEK + STARTS CURRENT_TIMESTAMP + ENDS '2099-12-30 23:12:01'; diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery5.out b/tests/data/parser/parseAlterEventOnScheduleEvery5.out new file mode 100644 index 000000000..5ed5f1c34 --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery5.out @@ -0,0 +1,391 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP\n ENDS '2099-12-30 23:12:01';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP\n ENDS '2099-12-30 23:12:01';\n", + "len": 105, + "last": 105, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVERY", + "value": "EVERY", + "keyword": "EVERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STARTS", + "value": "STARTS", + "keyword": "STARTS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENDS", + "value": "ENDS", + "keyword": "ENDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2099-12-30 23:12:01'", + "value": "2099-12-30 23:12:01", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "EVERY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2 WEEK", + "alias": null, + "function": null, + "subquery": null + }, + "value": "2 WEEK" + }, + "3": { + "name": "STARTS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + }, + "4": { + "name": "ENDS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "2099-12-30 23:12:01", + "expr": "'2099-12-30 23:12:01'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'2099-12-30 23:12:01'" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery6.in b/tests/data/parser/parseAlterEventOnScheduleEvery6.in new file mode 100644 index 000000000..d3429a90d --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery6.in @@ -0,0 +1,4 @@ +ALTER EVENT my_event ON SCHEDULE + EVERY 2 WEEK + STARTS CURRENT_TIMESTAMP + ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY; diff --git a/tests/data/parser/parseAlterEventOnScheduleEvery6.out b/tests/data/parser/parseAlterEventOnScheduleEvery6.out new file mode 100644 index 000000000..40bba927f --- /dev/null +++ b/tests/data/parser/parseAlterEventOnScheduleEvery6.out @@ -0,0 +1,481 @@ +{ + "query": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP\n ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER EVENT my_event ON SCHEDULE\n EVERY 2 WEEK\n STARTS CURRENT_TIMESTAMP\n ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY;\n", + "len": 122, + "last": 122, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 32, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON SCHEDULE", + "value": "ON SCHEDULE", + "keyword": "ON SCHEDULE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVERY", + "value": "EVERY", + "keyword": "EVERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WEEK", + "value": "WEEK", + "keyword": "WEEK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STARTS", + "value": "STARTS", + "keyword": "STARTS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENDS", + "value": "ENDS", + "keyword": "ENDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2099-12-30 23:12:01'", + "value": "2099-12-30 23:12:01", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAY", + "value": "DAY", + "keyword": "DAY", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@38" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ON SCHEDULE", + "2": { + "name": "EVERY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2 WEEK", + "alias": null, + "function": null, + "subquery": null + }, + "value": "2 WEEK" + }, + "3": { + "name": "STARTS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + }, + "4": { + "name": "ENDS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "2099-12-30 23:12:01", + "expr": "'2099-12-30 23:12:01'+ INTERVAL 1 DAY", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'2099-12-30 23:12:01'+ INTERVAL 1 DAY" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "EVENT" + } + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventWithDefiner.in b/tests/data/parser/parseAlterEventWithDefiner.in new file mode 100644 index 000000000..df95f5d95 --- /dev/null +++ b/tests/data/parser/parseAlterEventWithDefiner.in @@ -0,0 +1 @@ +ALTER DEFINER = user EVENT my_event ENABLE; diff --git a/tests/data/parser/parseAlterEventWithDefiner.out b/tests/data/parser/parseAlterEventWithDefiner.out new file mode 100644 index 000000000..5bf10747e --- /dev/null +++ b/tests/data/parser/parseAlterEventWithDefiner.out @@ -0,0 +1,271 @@ +{ + "query": "ALTER DEFINER = user EVENT my_event ENABLE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER DEFINER = user EVENT my_event ENABLE;\n", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENABLE", + "value": "ENABLE", + "keyword": "ENABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "ENABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "user", + "alias": null, + "function": null, + "subquery": null + }, + "value": "user" + }, + "3": "EVENT" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterEventWithOtherDefiners.in b/tests/data/parser/parseAlterEventWithOtherDefiners.in new file mode 100644 index 000000000..4c096b3d7 --- /dev/null +++ b/tests/data/parser/parseAlterEventWithOtherDefiners.in @@ -0,0 +1,5 @@ +ALTER DEFINER = 'user' EVENT my_event ENABLE; +ALTER DEFINER = `user` EVENT my_event ENABLE; +ALTER DEFINER = user@host EVENT my_event ENABLE; +ALTER DEFINER = 'user'@'host' EVENT my_event ENABLE; +ALTER DEFINER = `user`@`host` EVENT my_event ENABLE; diff --git a/tests/data/parser/parseAlterEventWithOtherDefiners.out b/tests/data/parser/parseAlterEventWithOtherDefiners.out new file mode 100644 index 000000000..c7bf9b4e0 --- /dev/null +++ b/tests/data/parser/parseAlterEventWithOtherDefiners.out @@ -0,0 +1,1146 @@ +{ + "query": "ALTER DEFINER = 'user' EVENT my_event ENABLE;\nALTER DEFINER = `user` EVENT my_event ENABLE;\nALTER DEFINER = user@host EVENT my_event ENABLE;\nALTER DEFINER = 'user'@'host' EVENT my_event ENABLE;\nALTER DEFINER = `user`@`host` EVENT my_event ENABLE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER DEFINER = 'user' EVENT my_event ENABLE;\nALTER DEFINER = `user` EVENT my_event ENABLE;\nALTER DEFINER = user@host EVENT my_event ENABLE;\nALTER DEFINER = 'user'@'host' EVENT my_event ENABLE;\nALTER DEFINER = `user`@`host` EVENT my_event ENABLE;\n", + "len": 247, + "last": 247, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 77, + "idx": 77, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENABLE", + "value": "ENABLE", + "keyword": "ENABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user`", + "value": "user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENABLE", + "value": "ENABLE", + "keyword": "ENABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@host", + "value": "host", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 1, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENABLE", + "value": "ENABLE", + "keyword": "ENABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'host'", + "value": "user@host", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 4, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENABLE", + "value": "ENABLE", + "keyword": "ENABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user`@`host`", + "value": "user@host", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 4, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EVENT", + "value": "EVENT", + "keyword": "EVENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_event", + "value": "my_event", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENABLE", + "value": "ENABLE", + "keyword": "ENABLE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 246 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "ENABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "user", + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'user'" + }, + "3": "EVENT" + } + }, + "first": 0, + "last": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "ENABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "user", + "expr": "`user`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`user`" + }, + "3": "EVENT" + } + }, + "first": 14, + "last": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "ENABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "user@host", + "alias": null, + "function": null, + "subquery": null + }, + "value": "user@host" + }, + "3": "EVENT" + } + }, + "first": 29, + "last": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "ENABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "user@host", + "expr": "'user'@'host'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'user'@'host'" + }, + "3": "EVENT" + } + }, + "first": 45, + "last": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_event", + "column": null, + "expr": "my_event", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "8": "ENABLE" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "user@host", + "expr": "`user`@`host`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`user`@`host`" + }, + "3": "EVENT" + } + }, + "first": 60, + "last": 74 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterFunction1.in b/tests/data/parser/parseAlterFunction1.in new file mode 100644 index 000000000..22ca89786 --- /dev/null +++ b/tests/data/parser/parseAlterFunction1.in @@ -0,0 +1 @@ +ALTER FUNCTION func_name COMMENT "test"; diff --git a/tests/data/parser/parseAlterFunction1.out b/tests/data/parser/parseAlterFunction1.out new file mode 100644 index 000000000..618a8a095 --- /dev/null +++ b/tests/data/parser/parseAlterFunction1.out @@ -0,0 +1,217 @@ +{ + "query": "ALTER FUNCTION func_name COMMENT \"test\";\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER FUNCTION func_name COMMENT \"test\";\n", + "len": 41, + "last": 41, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "func_name", + "value": "func_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "func_name", + "column": null, + "expr": "func_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "FUNCTION" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterFunction2.in b/tests/data/parser/parseAlterFunction2.in new file mode 100644 index 000000000..ae0231ed6 --- /dev/null +++ b/tests/data/parser/parseAlterFunction2.in @@ -0,0 +1 @@ +ALTER FUNCTION func_name LANGUAGE SQL; diff --git a/tests/data/parser/parseAlterFunction2.out b/tests/data/parser/parseAlterFunction2.out new file mode 100644 index 000000000..82c93c9b2 --- /dev/null +++ b/tests/data/parser/parseAlterFunction2.out @@ -0,0 +1,188 @@ +{ + "query": "ALTER FUNCTION func_name LANGUAGE SQL;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER FUNCTION func_name LANGUAGE SQL;\n", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "func_name", + "value": "func_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "func_name", + "column": null, + "expr": "func_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "LANGUAGE SQL" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "FUNCTION" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterFunction3.in b/tests/data/parser/parseAlterFunction3.in new file mode 100644 index 000000000..9d1bbebc8 --- /dev/null +++ b/tests/data/parser/parseAlterFunction3.in @@ -0,0 +1 @@ +ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER; diff --git a/tests/data/parser/parseAlterFunction3.out b/tests/data/parser/parseAlterFunction3.out new file mode 100644 index 000000000..5780f3729 --- /dev/null +++ b/tests/data/parser/parseAlterFunction3.out @@ -0,0 +1,309 @@ +{ + "query": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER;\n", + "len": 88, + "last": 88, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "func_name", + "value": "func_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONTAINS SQL", + "value": "CONTAINS SQL", + "keyword": "CONTAINS SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "func_name", + "column": null, + "expr": "func_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "CONTAINS SQL", + "4": "SQL SECURITY", + "5": "DEFINER" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "FUNCTION" + } + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterFunction4.in b/tests/data/parser/parseAlterFunction4.in new file mode 100644 index 000000000..5e40da74b --- /dev/null +++ b/tests/data/parser/parseAlterFunction4.in @@ -0,0 +1 @@ +ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL NO SQL SQL SECURITY INVOKER; diff --git a/tests/data/parser/parseAlterFunction4.out b/tests/data/parser/parseAlterFunction4.out new file mode 100644 index 000000000..05b50d66d --- /dev/null +++ b/tests/data/parser/parseAlterFunction4.out @@ -0,0 +1,309 @@ +{ + "query": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL NO SQL SQL SECURITY INVOKER;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL NO SQL SQL SECURITY INVOKER;\n", + "len": 82, + "last": 82, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "func_name", + "value": "func_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO SQL", + "value": "NO SQL", + "keyword": "NO SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "func_name", + "column": null, + "expr": "func_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "NO SQL", + "4": "SQL SECURITY", + "5": "INVOKER" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "FUNCTION" + } + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterFunction5.in b/tests/data/parser/parseAlterFunction5.in new file mode 100644 index 000000000..818245903 --- /dev/null +++ b/tests/data/parser/parseAlterFunction5.in @@ -0,0 +1 @@ +ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL READS SQL DATA; diff --git a/tests/data/parser/parseAlterFunction5.out b/tests/data/parser/parseAlterFunction5.out new file mode 100644 index 000000000..27363a810 --- /dev/null +++ b/tests/data/parser/parseAlterFunction5.out @@ -0,0 +1,263 @@ +{ + "query": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL READS SQL DATA;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL READS SQL DATA;\n", + "len": 69, + "last": 69, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "func_name", + "value": "func_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READS SQL DATA", + "value": "READS SQL DATA", + "keyword": "READS SQL DATA", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "func_name", + "column": null, + "expr": "func_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "READS SQL DATA" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "FUNCTION" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterFunction6.in b/tests/data/parser/parseAlterFunction6.in new file mode 100644 index 000000000..8ccff1ade --- /dev/null +++ b/tests/data/parser/parseAlterFunction6.in @@ -0,0 +1 @@ +ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL MODIFIES SQL DATA; diff --git a/tests/data/parser/parseAlterFunction6.out b/tests/data/parser/parseAlterFunction6.out new file mode 100644 index 000000000..5633dba66 --- /dev/null +++ b/tests/data/parser/parseAlterFunction6.out @@ -0,0 +1,263 @@ +{ + "query": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL MODIFIES SQL DATA;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER FUNCTION func_name COMMENT \"test\" LANGUAGE SQL MODIFIES SQL DATA;\n", + "len": 72, + "last": 72, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "func_name", + "value": "func_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFIES SQL DATA", + "value": "MODIFIES SQL DATA", + "keyword": "MODIFIES SQL DATA", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "func_name", + "column": null, + "expr": "func_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "MODIFIES SQL DATA" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "FUNCTION" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterProcedure1.in b/tests/data/parser/parseAlterProcedure1.in new file mode 100644 index 000000000..f3d1bec3d --- /dev/null +++ b/tests/data/parser/parseAlterProcedure1.in @@ -0,0 +1 @@ +ALTER PROCEDURE proc_name COMMENT "test"; diff --git a/tests/data/parser/parseAlterProcedure1.out b/tests/data/parser/parseAlterProcedure1.out new file mode 100644 index 000000000..9e3ddc522 --- /dev/null +++ b/tests/data/parser/parseAlterProcedure1.out @@ -0,0 +1,217 @@ +{ + "query": "ALTER PROCEDURE proc_name COMMENT \"test\";\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER PROCEDURE proc_name COMMENT \"test\";\n", + "len": 42, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "proc_name", + "value": "proc_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "proc_name", + "column": null, + "expr": "proc_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "PROCEDURE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterProcedure2.in b/tests/data/parser/parseAlterProcedure2.in new file mode 100644 index 000000000..21dc117bc --- /dev/null +++ b/tests/data/parser/parseAlterProcedure2.in @@ -0,0 +1 @@ +ALTER PROCEDURE proc_name LANGUAGE SQL; diff --git a/tests/data/parser/parseAlterProcedure2.out b/tests/data/parser/parseAlterProcedure2.out new file mode 100644 index 000000000..fa344b1af --- /dev/null +++ b/tests/data/parser/parseAlterProcedure2.out @@ -0,0 +1,188 @@ +{ + "query": "ALTER PROCEDURE proc_name LANGUAGE SQL;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER PROCEDURE proc_name LANGUAGE SQL;\n", + "len": 40, + "last": 40, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "proc_name", + "value": "proc_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "proc_name", + "column": null, + "expr": "proc_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "LANGUAGE SQL" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "PROCEDURE" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterProcedure3.in b/tests/data/parser/parseAlterProcedure3.in new file mode 100644 index 000000000..9e26dc1ee --- /dev/null +++ b/tests/data/parser/parseAlterProcedure3.in @@ -0,0 +1 @@ +ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER; diff --git a/tests/data/parser/parseAlterProcedure3.out b/tests/data/parser/parseAlterProcedure3.out new file mode 100644 index 000000000..15cedfb77 --- /dev/null +++ b/tests/data/parser/parseAlterProcedure3.out @@ -0,0 +1,309 @@ +{ + "query": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER;\n", + "len": 89, + "last": 89, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "proc_name", + "value": "proc_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONTAINS SQL", + "value": "CONTAINS SQL", + "keyword": "CONTAINS SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "proc_name", + "column": null, + "expr": "proc_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "CONTAINS SQL", + "4": "SQL SECURITY", + "5": "DEFINER" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "PROCEDURE" + } + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterProcedure4.in b/tests/data/parser/parseAlterProcedure4.in new file mode 100644 index 000000000..08d51a2da --- /dev/null +++ b/tests/data/parser/parseAlterProcedure4.in @@ -0,0 +1 @@ +ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL NO SQL SQL SECURITY INVOKER; diff --git a/tests/data/parser/parseAlterProcedure4.out b/tests/data/parser/parseAlterProcedure4.out new file mode 100644 index 000000000..dac4e196e --- /dev/null +++ b/tests/data/parser/parseAlterProcedure4.out @@ -0,0 +1,309 @@ +{ + "query": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL NO SQL SQL SECURITY INVOKER;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL NO SQL SQL SECURITY INVOKER;\n", + "len": 83, + "last": 83, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "proc_name", + "value": "proc_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO SQL", + "value": "NO SQL", + "keyword": "NO SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "proc_name", + "column": null, + "expr": "proc_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "NO SQL", + "4": "SQL SECURITY", + "5": "INVOKER" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "PROCEDURE" + } + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterProcedure5.in b/tests/data/parser/parseAlterProcedure5.in new file mode 100644 index 000000000..a792e05f9 --- /dev/null +++ b/tests/data/parser/parseAlterProcedure5.in @@ -0,0 +1 @@ +ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL READS SQL DATA; diff --git a/tests/data/parser/parseAlterProcedure5.out b/tests/data/parser/parseAlterProcedure5.out new file mode 100644 index 000000000..7fede89e6 --- /dev/null +++ b/tests/data/parser/parseAlterProcedure5.out @@ -0,0 +1,263 @@ +{ + "query": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL READS SQL DATA;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL READS SQL DATA;\n", + "len": 70, + "last": 70, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "proc_name", + "value": "proc_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READS SQL DATA", + "value": "READS SQL DATA", + "keyword": "READS SQL DATA", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "proc_name", + "column": null, + "expr": "proc_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "READS SQL DATA" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "PROCEDURE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterProcedure6.in b/tests/data/parser/parseAlterProcedure6.in new file mode 100644 index 000000000..44e033d65 --- /dev/null +++ b/tests/data/parser/parseAlterProcedure6.in @@ -0,0 +1 @@ +ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL MODIFIES SQL DATA; diff --git a/tests/data/parser/parseAlterProcedure6.out b/tests/data/parser/parseAlterProcedure6.out new file mode 100644 index 000000000..5483b3b7a --- /dev/null +++ b/tests/data/parser/parseAlterProcedure6.out @@ -0,0 +1,263 @@ +{ + "query": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL MODIFIES SQL DATA;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER PROCEDURE proc_name COMMENT \"test\" LANGUAGE SQL MODIFIES SQL DATA;\n", + "len": 73, + "last": 73, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "proc_name", + "value": "proc_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"test\"", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LANGUAGE SQL", + "value": "LANGUAGE SQL", + "keyword": "LANGUAGE SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFIES SQL DATA", + "value": "MODIFIES SQL DATA", + "keyword": "MODIFIES SQL DATA", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "proc_name", + "column": null, + "expr": "proc_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "\"test\"", + "value": "test" + }, + "2": "LANGUAGE SQL", + "3": "MODIFIES SQL DATA" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "PROCEDURE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterRenameColumn.in b/tests/data/parser/parseAlterRenameColumn.in new file mode 100644 index 000000000..dd90c1490 --- /dev/null +++ b/tests/data/parser/parseAlterRenameColumn.in @@ -0,0 +1 @@ +ALTER TABLE myTable RENAME COLUMN foo TO bar; diff --git a/tests/data/parser/parseAlterRenameColumn.out b/tests/data/parser/parseAlterRenameColumn.out new file mode 100644 index 000000000..78e506655 --- /dev/null +++ b/tests/data/parser/parseAlterRenameColumn.out @@ -0,0 +1,292 @@ +{ + "query": "ALTER TABLE myTable RENAME COLUMN foo TO bar;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE myTable RENAME COLUMN foo TO bar;\n", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "myTable", + "value": "myTable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "myTable", + "column": null, + "expr": "myTable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [ + "RENAME", + "COLUMN", + { + "name": "TO", + "equals": false, + "expr": "bar", + "value": "bar" + } + ] + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "foo", + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterRenameColumns.in b/tests/data/parser/parseAlterRenameColumns.in new file mode 100644 index 000000000..e2ca53008 --- /dev/null +++ b/tests/data/parser/parseAlterRenameColumns.in @@ -0,0 +1,4 @@ +ALTER TABLE myTable RENAME COLUMN a TO b, + RENAME COLUMN b TO c, + RENAME COLUMN c TO d, + RENAME COLUMN d TO a; diff --git a/tests/data/parser/parseAlterRenameColumns.out b/tests/data/parser/parseAlterRenameColumns.out new file mode 100644 index 000000000..be1d07414 --- /dev/null +++ b/tests/data/parser/parseAlterRenameColumns.out @@ -0,0 +1,741 @@ +{ + "query": "ALTER TABLE myTable RENAME COLUMN a TO b,\n RENAME COLUMN b TO c,\n RENAME COLUMN c TO d,\n RENAME COLUMN d TO a;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE myTable RENAME COLUMN a TO b,\n RENAME COLUMN b TO c,\n RENAME COLUMN c TO d,\n RENAME COLUMN d TO a;\n", + "len": 168, + "last": 168, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 51, + "idx": 51, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "myTable", + "value": "myTable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "d", + "value": "d", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "d", + "value": "d", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@55" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "myTable", + "column": null, + "expr": "myTable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [ + "RENAME", + "COLUMN", + { + "name": "TO", + "equals": false, + "expr": "b", + "value": "b" + } + ] + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [ + "RENAME", + "COLUMN", + { + "name": "TO", + "equals": false, + "expr": "c", + "value": "c" + } + ] + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [ + "RENAME", + "COLUMN", + { + "name": "TO", + "equals": false, + "expr": "d", + "value": "d" + } + ] + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "c", + "expr": "c", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [ + "RENAME", + "COLUMN", + { + "name": "TO", + "equals": false, + "expr": "a", + "value": "a" + } + ] + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "d", + "expr": "d", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 48 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableAddColumnWithCheck.in b/tests/data/parser/parseAlterTableAddColumnWithCheck.in new file mode 100644 index 000000000..8b5665007 --- /dev/null +++ b/tests/data/parser/parseAlterTableAddColumnWithCheck.in @@ -0,0 +1 @@ +ALTER TABLE `xx` ADD `json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`json`)); \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableAddColumnWithCheck.out b/tests/data/parser/parseAlterTableAddColumnWithCheck.out new file mode 100644 index 000000000..505d3d44b --- /dev/null +++ b/tests/data/parser/parseAlterTableAddColumnWithCheck.out @@ -0,0 +1,488 @@ +{ + "query": "ALTER TABLE `xx` ADD `json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`json`));", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `xx` ADD `json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`json`));", + "len": 115, + "last": 115, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 32, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`xx`", + "value": "xx", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`json`", + "value": "json", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "longtext", + "value": "LONGTEXT", + "keyword": "LONGTEXT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_bin", + "value": "utf8mb4_bin", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "json_valid", + "value": "json_valid", + "keyword": "JSON_VALID", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 16, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`json`", + "value": "json", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 16, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@38" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "xx", + "column": null, + "expr": "`xx`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "json", + "expr": "`json`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@28" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableAddSpatialIndex1.in b/tests/data/parser/parseAlterTableAddSpatialIndex1.in new file mode 100644 index 000000000..0b338c06d --- /dev/null +++ b/tests/data/parser/parseAlterTableAddSpatialIndex1.in @@ -0,0 +1 @@ +ALTER TABLE testtable ADD SPATIAL INDEX(`mypoint`), ALGORITHM=INPLACE, LOCK=SHARED; \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableAddSpatialIndex1.out b/tests/data/parser/parseAlterTableAddSpatialIndex1.out new file mode 100644 index 000000000..3d33446a1 --- /dev/null +++ b/tests/data/parser/parseAlterTableAddSpatialIndex1.out @@ -0,0 +1,393 @@ +{ + "query": "ALTER TABLE testtable ADD SPATIAL INDEX(`mypoint`), ALGORITHM=INPLACE, LOCK=SHARED;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE testtable ADD SPATIAL INDEX(`mypoint`), ALGORITHM=INPLACE, LOCK=SHARED;", + "len": 83, + "last": 83, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SPATIAL INDEX", + "value": "SPATIAL INDEX", + "keyword": "SPATIAL INDEX", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mypoint`", + "value": "mypoint", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INPLACE", + "value": "INPLACE", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SHARED", + "value": "SHARED", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@16" + }, + { + "@type": "@18" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ALGORITHM", + "equals": true, + "expr": "INPLACE", + "value": "INPLACE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "LOCK", + "equals": true, + "expr": "SHARED", + "value": "SHARED" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableAddUniqueKey1.in b/tests/data/parser/parseAlterTableAddUniqueKey1.in new file mode 100644 index 000000000..15baa47a3 --- /dev/null +++ b/tests/data/parser/parseAlterTableAddUniqueKey1.in @@ -0,0 +1 @@ +ALTER TABLE testtable ADD UNIQUE KEY name_of_the_unique_constraint (`UNIQUE_COLUMN`); diff --git a/tests/data/parser/parseAlterTableAddUniqueKey1.out b/tests/data/parser/parseAlterTableAddUniqueKey1.out new file mode 100644 index 000000000..0a770acf4 --- /dev/null +++ b/tests/data/parser/parseAlterTableAddUniqueKey1.out @@ -0,0 +1,300 @@ +{ + "query": "ALTER TABLE testtable ADD UNIQUE KEY name_of_the_unique_constraint (`UNIQUE_COLUMN`);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE testtable ADD UNIQUE KEY name_of_the_unique_constraint (`UNIQUE_COLUMN`);\n", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE KEY", + "value": "UNIQUE KEY", + "keyword": "UNIQUE KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name_of_the_unique_constraint", + "value": "name_of_the_unique_constraint", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`UNIQUE_COLUMN`", + "value": "UNIQUE_COLUMN", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "UNIQUE KEY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name_of_the_unique_constraint", + "expr": "name_of_the_unique_constraint", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@17" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableAddUniqueKey2.in b/tests/data/parser/parseAlterTableAddUniqueKey2.in new file mode 100644 index 000000000..aedc20122 --- /dev/null +++ b/tests/data/parser/parseAlterTableAddUniqueKey2.in @@ -0,0 +1 @@ +ALTER TABLE testtable ADD UNIQUE name_of_the_unique_constraint (`UNIQUE_COLUMN`); diff --git a/tests/data/parser/parseAlterTableAddUniqueKey2.out b/tests/data/parser/parseAlterTableAddUniqueKey2.out new file mode 100644 index 000000000..87e0d82d1 --- /dev/null +++ b/tests/data/parser/parseAlterTableAddUniqueKey2.out @@ -0,0 +1,300 @@ +{ + "query": "ALTER TABLE testtable ADD UNIQUE name_of_the_unique_constraint (`UNIQUE_COLUMN`);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE testtable ADD UNIQUE name_of_the_unique_constraint (`UNIQUE_COLUMN`);\n", + "len": 82, + "last": 82, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE", + "value": "UNIQUE", + "keyword": "UNIQUE", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name_of_the_unique_constraint", + "value": "name_of_the_unique_constraint", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`UNIQUE_COLUMN`", + "value": "UNIQUE_COLUMN", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "UNIQUE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name_of_the_unique_constraint", + "expr": "name_of_the_unique_constraint", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@17" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCharacterSet1.in b/tests/data/parser/parseAlterTableCharacterSet1.in new file mode 100644 index 000000000..5796c0450 --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet1.in @@ -0,0 +1 @@ +ALTER TABLE `d` DEFAULT CHARSET=hp8 COLLATE hp8_english_ci; diff --git a/tests/data/parser/parseAlterTableCharacterSet1.out b/tests/data/parser/parseAlterTableCharacterSet1.out new file mode 100644 index 000000000..03818f25a --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet1.out @@ -0,0 +1,277 @@ +{ + "query": "ALTER TABLE `d` DEFAULT CHARSET=hp8 COLLATE hp8_english_ci;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `d` DEFAULT CHARSET=hp8 COLLATE hp8_english_ci;\n", + "len": 60, + "last": 60, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8", + "value": "hp8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8_english_ci", + "value": "hp8_english_ci", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DEFAULT CHARSET" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@14" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCharacterSet2.in b/tests/data/parser/parseAlterTableCharacterSet2.in new file mode 100644 index 000000000..42854df9b --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet2.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARSET=hp8 + diff --git a/tests/data/parser/parseAlterTableCharacterSet2.out b/tests/data/parser/parseAlterTableCharacterSet2.out new file mode 100644 index 000000000..6ea8072ab --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet2.out @@ -0,0 +1,213 @@ +{ + "query": "ALTER TABLE `d` CHARSET=hp8\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `d` CHARSET=hp8\n\n", + "len": 29, + "last": 29, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8", + "value": "hp8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHARSET" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@14" + }, + { + "@type": "@16" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCharacterSet3.in b/tests/data/parser/parseAlterTableCharacterSet3.in new file mode 100644 index 000000000..535272242 --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet3.in @@ -0,0 +1 @@ +ALTER TABLE `d` CHARSET=hp8; diff --git a/tests/data/parser/parseAlterTableCharacterSet3.out b/tests/data/parser/parseAlterTableCharacterSet3.out new file mode 100644 index 000000000..17847fa0b --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet3.out @@ -0,0 +1,221 @@ +{ + "query": "ALTER TABLE `d` CHARSET=hp8;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `d` CHARSET=hp8;\n", + "len": 29, + "last": 29, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8", + "value": "hp8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHARSET" + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@14" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCharacterSet4.in b/tests/data/parser/parseAlterTableCharacterSet4.in new file mode 100644 index 000000000..8285dc84d --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet4.in @@ -0,0 +1,2 @@ +ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; + diff --git a/tests/data/parser/parseAlterTableCharacterSet4.out b/tests/data/parser/parseAlterTableCharacterSet4.out new file mode 100644 index 000000000..f4c101e8d --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet4.out @@ -0,0 +1,269 @@ +{ + "query": "ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;\n\n", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_name", + "value": "tbl_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONVERT", + "value": "CONVERT", + "keyword": "CONVERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "charset_name", + "value": "charset_name", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl_name", + "column": null, + "expr": "tbl_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONVERT", + "3": { + "name": "TO", + "equals": false, + "expr": "CHARACTER SET", + "value": "CHARACTER SET" + } + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "charset_name", + "expr": "charset_name", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCharacterSet5.in b/tests/data/parser/parseAlterTableCharacterSet5.in new file mode 100644 index 000000000..1ebca8704 --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet5.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARACTER SET utf8; + diff --git a/tests/data/parser/parseAlterTableCharacterSet5.out b/tests/data/parser/parseAlterTableCharacterSet5.out new file mode 100644 index 000000000..3e23c9901 --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet5.out @@ -0,0 +1,221 @@ +{ + "query": "ALTER TABLE `d` CHARACTER SET utf8;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `d` CHARACTER SET utf8;\n\n", + "len": 37, + "last": 37, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "CHARACTER SET" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "utf8", + "expr": "utf8", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCharacterSet6.in b/tests/data/parser/parseAlterTableCharacterSet6.in new file mode 100644 index 000000000..cff88fd4a --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet6.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci; + diff --git a/tests/data/parser/parseAlterTableCharacterSet6.out b/tests/data/parser/parseAlterTableCharacterSet6.out new file mode 100644 index 000000000..a54c112a0 --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet6.out @@ -0,0 +1,275 @@ +{ + "query": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8_general_ci", + "value": "utf8_general_ci", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "CHARACTER SET" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "utf8", + "expr": "utf8", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCharacterSet7.in b/tests/data/parser/parseAlterTableCharacterSet7.in new file mode 100644 index 000000000..2e06d7c6f --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet7.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci; + diff --git a/tests/data/parser/parseAlterTableCharacterSet7.out b/tests/data/parser/parseAlterTableCharacterSet7.out new file mode 100644 index 000000000..27f791c84 --- /dev/null +++ b/tests/data/parser/parseAlterTableCharacterSet7.out @@ -0,0 +1,275 @@ +{ + "query": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8_general_ci", + "value": "utf8_general_ci", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "CHARACTER SET" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "utf8", + "expr": "utf8", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCoalescePartition.in b/tests/data/parser/parseAlterTableCoalescePartition.in new file mode 100644 index 000000000..c39bf637e --- /dev/null +++ b/tests/data/parser/parseAlterTableCoalescePartition.in @@ -0,0 +1 @@ +ALTER TABLE `MY_TABLE` COALESCE PARTITION 2; \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableCoalescePartition.out b/tests/data/parser/parseAlterTableCoalescePartition.out new file mode 100644 index 000000000..bec3281e3 --- /dev/null +++ b/tests/data/parser/parseAlterTableCoalescePartition.out @@ -0,0 +1,206 @@ +{ + "query": "ALTER TABLE `MY_TABLE` COALESCE PARTITION 2;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `MY_TABLE` COALESCE PARTITION 2;", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`MY_TABLE`", + "value": "MY_TABLE", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COALESCE PARTITION", + "value": "COALESCE PARTITION", + "keyword": "COALESCE PARTITION", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "MY_TABLE", + "column": null, + "expr": "`MY_TABLE`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COALESCE PARTITION", + "equals": false, + "expr": "2", + "value": "2" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableDropAddIndex1.in b/tests/data/parser/parseAlterTableDropAddIndex1.in new file mode 100644 index 000000000..1b2a0b8b5 --- /dev/null +++ b/tests/data/parser/parseAlterTableDropAddIndex1.in @@ -0,0 +1 @@ +ALTER TABLE testtable DROP INDEX my_index2, ADD INDEX my_index3(id, id3) USING BTREE, ALGORITHM=COPY; diff --git a/tests/data/parser/parseAlterTableDropAddIndex1.out b/tests/data/parser/parseAlterTableDropAddIndex1.out new file mode 100644 index 000000000..cc73372c1 --- /dev/null +++ b/tests/data/parser/parseAlterTableDropAddIndex1.out @@ -0,0 +1,548 @@ +{ + "query": "ALTER TABLE testtable DROP INDEX my_index2, ADD INDEX my_index3(id, id3) USING BTREE, ALGORITHM=COPY;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE testtable DROP INDEX my_index2, ADD INDEX my_index3(id, id3) USING BTREE, ALGORITHM=COPY;\n", + "len": 102, + "last": 102, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 36, + "idx": 36, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DROP", + "value": "DROP", + "keyword": "DROP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index2", + "value": "my_index2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index3", + "value": "my_index3", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id3", + "value": "id3", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BTREE", + "value": "BTREE", + "keyword": "BTREE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COPY", + "value": "COPY", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DROP", + "2": { + "name": "INDEX", + "equals": false, + "expr": "my_index2", + "value": "my_index2" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": { + "name": "INDEX", + "equals": false, + "expr": "my_index3", + "value": "my_index3" + } + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ALGORITHM", + "equals": true, + "expr": "COPY", + "value": "COPY" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableDropColumn1.in b/tests/data/parser/parseAlterTableDropColumn1.in new file mode 100644 index 000000000..ed61e28b2 --- /dev/null +++ b/tests/data/parser/parseAlterTableDropColumn1.in @@ -0,0 +1 @@ +ALTER TABLE `testtable` DROP COLUMN `id2`, ALGORITHM=INPLACE, LOCK=NONE; \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableDropColumn1.out b/tests/data/parser/parseAlterTableDropColumn1.out new file mode 100644 index 000000000..0b847b140 --- /dev/null +++ b/tests/data/parser/parseAlterTableDropColumn1.out @@ -0,0 +1,379 @@ +{ + "query": "ALTER TABLE `testtable` DROP COLUMN `id2`, ALGORITHM=INPLACE, LOCK=NONE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `testtable` DROP COLUMN `id2`, ALGORITHM=INPLACE, LOCK=NONE;", + "len": 72, + "last": 72, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`testtable`", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DROP", + "value": "DROP", + "keyword": "DROP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id2`", + "value": "id2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INPLACE", + "value": "INPLACE", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NONE", + "value": "NONE", + "keyword": "NONE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "`testtable`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DROP", + "2": "COLUMN" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id2", + "expr": "`id2`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ALGORITHM", + "equals": true, + "expr": "INPLACE", + "value": "INPLACE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "LOCK", + "equals": true, + "expr": "NONE", + "value": "NONE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableModifyColumn.in b/tests/data/parser/parseAlterTableModifyColumn.in new file mode 100644 index 000000000..667cd5268 --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumn.in @@ -0,0 +1 @@ +ALTER TABLE testtable MODIFY COLUMN id INT(11) FIRST, ALGORITHM=INPLACE, LOCK=SHARED; \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableModifyColumn.out b/tests/data/parser/parseAlterTableModifyColumn.out new file mode 100644 index 000000000..9ceeca2a4 --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumn.out @@ -0,0 +1,475 @@ +{ + "query": "ALTER TABLE testtable MODIFY COLUMN id INT(11) FIRST, ALGORITHM=INPLACE, LOCK=SHARED;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE testtable MODIFY COLUMN id INT(11) FIRST, ALGORITHM=INPLACE, LOCK=SHARED;", + "len": 85, + "last": 85, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 30, + "idx": 30, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIRST", + "value": "FIRST", + "keyword": "FIRST", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 2, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INPLACE", + "value": "INPLACE", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 2, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SHARED", + "value": "SHARED", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@36" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY", + "2": "COLUMN" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ALGORITHM", + "equals": true, + "expr": "INPLACE", + "value": "INPLACE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "LOCK", + "equals": true, + "expr": "SHARED", + "value": "SHARED" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 28 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableModifyColumnEnum1.in b/tests/data/parser/parseAlterTableModifyColumnEnum1.in new file mode 100644 index 000000000..59e4cc8c1 --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumnEnum1.in @@ -0,0 +1,2 @@ +-- ENUM with a string that is a database option. +ALTER TABLE `test_table` MODIFY `COL` ENUM("COLLATE") NULL; diff --git a/tests/data/parser/parseAlterTableModifyColumnEnum1.out b/tests/data/parser/parseAlterTableModifyColumnEnum1.out new file mode 100644 index 000000000..0b308f888 --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumnEnum1.out @@ -0,0 +1,343 @@ +{ + "query": "-- ENUM with a string that is a database option.\nALTER TABLE `test_table` MODIFY `COL` ENUM(\"COLLATE\") NULL;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- ENUM with a string that is a database option.\nALTER TABLE `test_table` MODIFY `COL` ENUM(\"COLLATE\") NULL;\n", + "len": 109, + "last": 109, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- ENUM with a string that is a database option.", + "value": "-- ENUM with a string that is a database option.", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test_table`", + "value": "test_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`COL`", + "value": "COL", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"COLLATE\"", + "value": "COLLATE", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 16, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_table", + "column": null, + "expr": "`test_table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "COL", + "expr": "`COL`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableModifyColumnEnum2.in b/tests/data/parser/parseAlterTableModifyColumnEnum2.in new file mode 100644 index 000000000..af5b1fb30 --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumnEnum2.in @@ -0,0 +1,2 @@ +-- ENUM with a string that is a table option. +ALTER TABLE `test_table` MODIFY `COL` ENUM("LOCK") NULL; diff --git a/tests/data/parser/parseAlterTableModifyColumnEnum2.out b/tests/data/parser/parseAlterTableModifyColumnEnum2.out new file mode 100644 index 000000000..47dbfeebf --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumnEnum2.out @@ -0,0 +1,343 @@ +{ + "query": "-- ENUM with a string that is a table option.\nALTER TABLE `test_table` MODIFY `COL` ENUM(\"LOCK\") NULL;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- ENUM with a string that is a table option.\nALTER TABLE `test_table` MODIFY `COL` ENUM(\"LOCK\") NULL;\n", + "len": 103, + "last": 103, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- ENUM with a string that is a table option.", + "value": "-- ENUM with a string that is a table option.", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test_table`", + "value": "test_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`COL`", + "value": "COL", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"LOCK\"", + "value": "LOCK", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 16, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_table", + "column": null, + "expr": "`test_table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "COL", + "expr": "`COL`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableModifyColumnEnum3.in b/tests/data/parser/parseAlterTableModifyColumnEnum3.in new file mode 100644 index 000000000..f5e1ca1c5 --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumnEnum3.in @@ -0,0 +1,2 @@ +-- ENUM with a string that is a statement. +ALTER TABLE `test_table` MODIFY `COL` ENUM("INSERT") NULL; diff --git a/tests/data/parser/parseAlterTableModifyColumnEnum3.out b/tests/data/parser/parseAlterTableModifyColumnEnum3.out new file mode 100644 index 000000000..02c9ae3f1 --- /dev/null +++ b/tests/data/parser/parseAlterTableModifyColumnEnum3.out @@ -0,0 +1,343 @@ +{ + "query": "-- ENUM with a string that is a statement.\nALTER TABLE `test_table` MODIFY `COL` ENUM(\"INSERT\") NULL;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- ENUM with a string that is a statement.\nALTER TABLE `test_table` MODIFY `COL` ENUM(\"INSERT\") NULL;\n", + "len": 102, + "last": 102, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- ENUM with a string that is a statement.", + "value": "-- ENUM with a string that is a statement.", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test_table`", + "value": "test_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`COL`", + "value": "COL", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": { + "@type": "@7" + }, + "flags": 9, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"INSERT\"", + "value": "INSERT", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_table", + "column": null, + "expr": "`test_table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "COL", + "expr": "`COL`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTablePartitionByRange1.in b/tests/data/parser/parseAlterTablePartitionByRange1.in new file mode 100644 index 000000000..ce9415165 --- /dev/null +++ b/tests/data/parser/parseAlterTablePartitionByRange1.in @@ -0,0 +1,16 @@ +ALTER TABLE trips PARTITION BY RANGE (MONTH(trip_date)) +( + PARTITION p01 VALUES LESS THAN (02), + PARTITION p02 VALUES LESS THAN (03), + PARTITION p03 VALUES LESS THAN (04), + PARTITION p04 VALUES LESS THAN (05), + PARTITION p05 VALUES LESS THAN (06), + PARTITION p06 VALUES LESS THAN (07), + PARTITION p07 VALUES LESS THAN (08), + PARTITION p08 VALUES LESS THAN (09), + PARTITION p09 VALUES LESS THAN (10), + PARTITION p10 VALUES LESS THAN (11), + PARTITION p11 VALUES LESS THAN (12), + PARTITION p12 VALUES LESS THAN (13), + PARTITION pmaxval VALUES LESS THAN MAXVALUE +); \ No newline at end of file diff --git a/tests/data/parser/parseAlterTablePartitionByRange1.out b/tests/data/parser/parseAlterTablePartitionByRange1.out new file mode 100644 index 000000000..5f134877d --- /dev/null +++ b/tests/data/parser/parseAlterTablePartitionByRange1.out @@ -0,0 +1,2909 @@ +{ + "query": "ALTER TABLE trips PARTITION BY RANGE (MONTH(trip_date))\n(\n PARTITION p01 VALUES LESS THAN (02),\n PARTITION p02 VALUES LESS THAN (03),\n PARTITION p03 VALUES LESS THAN (04),\n PARTITION p04 VALUES LESS THAN (05),\n PARTITION p05 VALUES LESS THAN (06),\n PARTITION p06 VALUES LESS THAN (07),\n PARTITION p07 VALUES LESS THAN (08),\n PARTITION p08 VALUES LESS THAN (09),\n PARTITION p09 VALUES LESS THAN (10),\n PARTITION p10 VALUES LESS THAN (11),\n PARTITION p11 VALUES LESS THAN (12),\n PARTITION p12 VALUES LESS THAN (13),\n PARTITION pmaxval VALUES LESS THAN MAXVALUE\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE trips PARTITION BY RANGE (MONTH(trip_date))\n(\n PARTITION p01 VALUES LESS THAN (02),\n PARTITION p02 VALUES LESS THAN (03),\n PARTITION p03 VALUES LESS THAN (04),\n PARTITION p04 VALUES LESS THAN (05),\n PARTITION p05 VALUES LESS THAN (06),\n PARTITION p06 VALUES LESS THAN (07),\n PARTITION p07 VALUES LESS THAN (08),\n PARTITION p08 VALUES LESS THAN (09),\n PARTITION p09 VALUES LESS THAN (10),\n PARTITION p10 VALUES LESS THAN (11),\n PARTITION p11 VALUES LESS THAN (12),\n PARTITION p12 VALUES LESS THAN (13),\n PARTITION pmaxval VALUES LESS THAN MAXVALUE\n);", + "len": 600, + "last": 600, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 188, + "idx": 188, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trips", + "value": "trips", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RANGE", + "value": "RANGE", + "keyword": "RANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MONTH", + "value": "MONTH", + "keyword": "MONTH", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trip_date", + "value": "trip_date", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p01", + "value": "p01", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "02", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p02", + "value": "p02", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "03", + "value": 3, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p03", + "value": "p03", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "04", + "value": 4, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p04", + "value": "p04", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "05", + "value": 5, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p05", + "value": "p05", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 246 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "06", + "value": 6, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p06", + "value": "p06", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "07", + "value": 7, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p07", + "value": "p07", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 338 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "08", + "value": 8, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p08", + "value": "p08", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "09", + "value": 9, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p09", + "value": "p09", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 431 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p10", + "value": "p10", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p11", + "value": "p11", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 485 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 503 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "12", + "value": 12, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p12", + "value": "p12", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 543 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 544 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "13", + "value": 13, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 554 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pmaxval", + "value": "pmaxval", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAXVALUE", + "value": "MAXVALUE", + "keyword": "MAXVALUE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 597 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 598 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@194" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "trips", + "column": null, + "expr": "trips", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "PARTITION BY" + } + }, + "field": " RANGE (MONTH(trip_date)) ", + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p01", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(02)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p02", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(03)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p03", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(04)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p04", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(05)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p05", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(06)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p06", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(07)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p07", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(08)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p08", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(09)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p09", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(10)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p10", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(11)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p11", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(12)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p12", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(13)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "pmaxval", + "type": "LESS THAN", + "expr": "MAXVALUE", + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 186 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTablePartitionByRange2.in b/tests/data/parser/parseAlterTablePartitionByRange2.in new file mode 100644 index 000000000..75879b968 --- /dev/null +++ b/tests/data/parser/parseAlterTablePartitionByRange2.in @@ -0,0 +1,5 @@ +ALTER TABLE d PARTITION BY RANGE (MONTH(departure_date)) +( +PARTITION p01 VALUES LESS THAN (02) , +PARTITION pmaxval VALUES LESS THAN MAXVALUE +); diff --git a/tests/data/parser/parseAlterTablePartitionByRange2.out b/tests/data/parser/parseAlterTablePartitionByRange2.out new file mode 100644 index 000000000..89f8dc27d --- /dev/null +++ b/tests/data/parser/parseAlterTablePartitionByRange2.out @@ -0,0 +1,709 @@ +{ + "query": "ALTER TABLE d PARTITION BY RANGE (MONTH(departure_date))\n(\nPARTITION p01 VALUES LESS THAN (02) ,\nPARTITION pmaxval VALUES LESS THAN MAXVALUE\n);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE d PARTITION BY RANGE (MONTH(departure_date))\n(\nPARTITION p01 VALUES LESS THAN (02) ,\nPARTITION pmaxval VALUES LESS THAN MAXVALUE\n);\n", + "len": 144, + "last": 144, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 47, + "idx": 47, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "d", + "value": "d", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RANGE", + "value": "RANGE", + "keyword": "RANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MONTH", + "value": "MONTH", + "keyword": "MONTH", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "departure_date", + "value": "departure_date", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p01", + "value": "p01", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "02", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pmaxval", + "value": "pmaxval", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAXVALUE", + "value": "MAXVALUE", + "keyword": "MAXVALUE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@52" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "d", + "column": null, + "expr": "d", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "PARTITION BY" + } + }, + "field": " RANGE (MONTH(departure_date)) ", + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p01", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(02)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "pmaxval", + "type": "LESS THAN", + "expr": "MAXVALUE", + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 44 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableRenameIndex1.in b/tests/data/parser/parseAlterTableRenameIndex1.in new file mode 100644 index 000000000..9cadfefb9 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameIndex1.in @@ -0,0 +1 @@ +ALTER TABLE `transactions` RENAME INDEX `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx` \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableRenameIndex1.out b/tests/data/parser/parseAlterTableRenameIndex1.out new file mode 100644 index 000000000..f7165a142 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameIndex1.out @@ -0,0 +1,266 @@ +{ + "query": "ALTER TABLE `transactions` RENAME INDEX `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `transactions` RENAME INDEX `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`", + "len": 120, + "last": 120, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`transactions`", + "value": "transactions", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_transactions_catalog_entries1_idx`", + "value": "fk_transactions_catalog_entries1_idx", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_transactions_catalog_entries2_idx`", + "value": "fk_transactions_catalog_entries2_idx", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "transactions", + "column": null, + "expr": "`transactions`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "RENAME", + "2": { + "name": "INDEX", + "equals": false, + "expr": "`fk_transactions_catalog_entries1_idx`", + "value": "fk_transactions_catalog_entries1_idx" + }, + "3": { + "name": "TO", + "equals": false, + "expr": "`fk_transactions_catalog_entries2_idx`", + "value": "fk_transactions_catalog_entries2_idx" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableRenameIndex2.in b/tests/data/parser/parseAlterTableRenameIndex2.in new file mode 100644 index 000000000..66c3a6d74 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameIndex2.in @@ -0,0 +1 @@ +ALTER TABLE testtable RENAME INDEX my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE; \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableRenameIndex2.out b/tests/data/parser/parseAlterTableRenameIndex2.out new file mode 100644 index 000000000..207bac742 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameIndex2.out @@ -0,0 +1,423 @@ +{ + "query": "ALTER TABLE testtable RENAME INDEX my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE testtable RENAME INDEX my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE;", + "len": 87, + "last": 87, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 27, + "idx": 27, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index", + "value": "my_index", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index2", + "value": "my_index2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INPLACE", + "value": "INPLACE", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NONE", + "value": "NONE", + "keyword": "NONE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "RENAME", + "2": { + "name": "INDEX", + "equals": false, + "expr": "my_index", + "value": "my_index" + }, + "3": { + "name": "TO", + "equals": false, + "expr": "my_index2", + "value": "my_index2" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ALGORITHM", + "equals": true, + "expr": "INPLACE", + "value": "INPLACE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "LOCK", + "equals": true, + "expr": "NONE", + "value": "NONE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableRenameKey1.in b/tests/data/parser/parseAlterTableRenameKey1.in new file mode 100644 index 000000000..90e599a59 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey1.in @@ -0,0 +1 @@ +ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx` diff --git a/tests/data/parser/parseAlterTableRenameKey1.out b/tests/data/parser/parseAlterTableRenameKey1.out new file mode 100644 index 000000000..7aeb88d20 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey1.out @@ -0,0 +1,277 @@ +{ + "query": "ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx`\n", + "len": 119, + "last": 119, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`transactions`", + "value": "transactions", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_transactions_catalog_entries1_idx`", + "value": "fk_transactions_catalog_entries1_idx", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_transactions_catalog_entries2_idx`", + "value": "fk_transactions_catalog_entries2_idx", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "transactions", + "column": null, + "expr": "`transactions`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "RENAME", + "2": { + "name": "KEY", + "equals": false, + "expr": "`fk_transactions_catalog_entries1_idx`", + "value": "fk_transactions_catalog_entries1_idx" + }, + "3": { + "name": "TO", + "equals": false, + "expr": "`fk_transactions_catalog_entries2_idx`", + "value": "fk_transactions_catalog_entries2_idx" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableRenameKey2.in b/tests/data/parser/parseAlterTableRenameKey2.in new file mode 100644 index 000000000..b59fc6423 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey2.in @@ -0,0 +1 @@ +ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE; diff --git a/tests/data/parser/parseAlterTableRenameKey2.out b/tests/data/parser/parseAlterTableRenameKey2.out new file mode 100644 index 000000000..80acc0927 --- /dev/null +++ b/tests/data/parser/parseAlterTableRenameKey2.out @@ -0,0 +1,434 @@ +{ + "query": "ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE;\n", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 28, + "idx": 28, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "testtable", + "value": "testtable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index", + "value": "my_index", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_index2", + "value": "my_index2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INPLACE", + "value": "INPLACE", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NONE", + "value": "NONE", + "keyword": "NONE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtable", + "column": null, + "expr": "testtable", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "RENAME", + "2": { + "name": "KEY", + "equals": false, + "expr": "my_index", + "value": "my_index" + }, + "3": { + "name": "TO", + "equals": false, + "expr": "my_index2", + "value": "my_index2" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ALGORITHM", + "equals": true, + "expr": "INPLACE", + "value": "INPLACE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "LOCK", + "equals": true, + "expr": "NONE", + "value": "NONE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterTableSetAutoIncrementError.in b/tests/data/parser/parseAlterTableSetAutoIncrementError.in new file mode 100644 index 000000000..2d7993c1a --- /dev/null +++ b/tests/data/parser/parseAlterTableSetAutoIncrementError.in @@ -0,0 +1 @@ +ALTER TABLE t1 AUTO_INCREMENT diff --git a/tests/data/parser/parseAlterTableSetAutoIncrementError.out b/tests/data/parser/parseAlterTableSetAutoIncrementError.out new file mode 100644 index 000000000..5925ed1ca --- /dev/null +++ b/tests/data/parser/parseAlterTableSetAutoIncrementError.out @@ -0,0 +1,190 @@ +{ + "query": "ALTER TABLE t1 AUTO_INCREMENT\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER TABLE t1 AUTO_INCREMENT\n", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "AUTO_INCREMENT", + "equals": true, + "expr": "", + "value": "" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value/Expression for the option AUTO_INCREMENT was expected.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser.in b/tests/data/parser/parseAlterUser.in new file mode 100644 index 000000000..db5975d94 --- /dev/null +++ b/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/tests/data/parser/parseAlterUser.out b/tests/data/parser/parseAlterUser.out new file mode 100644 index 000000000..9debb34c5 --- /dev/null +++ b/tests/data/parser/parseAlterUser.out @@ -0,0 +1,291 @@ +{ + "query": "ALTER USER 'jeffrey'@'localhost'\n IDENTIFIED BY 'new_password' PASSWORD EXPIRE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'jeffrey'@'localhost'\n IDENTIFIED BY 'new_password' PASSWORD EXPIRE;", + "len": 80, + "last": 80, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'jeffrey'@'localhost'", + "value": "jeffrey@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED", + "value": "IDENTIFIED", + "keyword": "IDENTIFIED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BY", + "value": "BY", + "keyword": "BY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'new_password'", + "value": "new_password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPIRE", + "value": "EXPIRE", + "keyword": "EXPIRE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "jeffrey@localhost", + "column": null, + "expr": "'jeffrey'@'localhost'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IDENTIFIED", + "4": { + "name": "BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "new_password", + "expr": "'new_password' PASSWORD", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'new_password' PASSWORD" + } + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "EXPIRE", + "expr": "EXPIRE", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser1.in b/tests/data/parser/parseAlterUser1.in new file mode 100644 index 000000000..629df955e --- /dev/null +++ b/tests/data/parser/parseAlterUser1.in @@ -0,0 +1 @@ +ALTER USER trevor REQUIRE NONE; \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser1.out b/tests/data/parser/parseAlterUser1.out new file mode 100644 index 000000000..f27a1e735 --- /dev/null +++ b/tests/data/parser/parseAlterUser1.out @@ -0,0 +1,204 @@ +{ + "query": "ALTER USER trevor REQUIRE NONE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER trevor REQUIRE NONE;", + "len": 31, + "last": 31, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trevor", + "value": "trevor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REQUIRE", + "value": "REQUIRE", + "keyword": "REQUIRE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NONE", + "value": "NONE", + "keyword": "NONE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "trevor", + "column": null, + "expr": "trevor", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "REQUIRE", + "equals": false, + "expr": "NONE", + "value": "NONE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser10.in b/tests/data/parser/parseAlterUser10.in new file mode 100644 index 000000000..bc8975034 --- /dev/null +++ b/tests/data/parser/parseAlterUser10.in @@ -0,0 +1,2 @@ +ALTER USER 'bob'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u'); + diff --git a/tests/data/parser/parseAlterUser10.out b/tests/data/parser/parseAlterUser10.out new file mode 100644 index 000000000..29594d596 --- /dev/null +++ b/tests/data/parser/parseAlterUser10.out @@ -0,0 +1,317 @@ +{ + "query": "ALTER USER 'bob'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u');\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'bob'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u');\n\n", + "len": 120, + "last": 120, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 19, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'bob'@'localhost'", + "value": "bob@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED WITH", + "value": "IDENTIFIED WITH", + "keyword": "IDENTIFIED WITH", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql_native_password", + "value": "mysql_native_password", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u'", + "value": "vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 16, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "bob@localhost", + "column": null, + "expr": "'bob'@'localhost'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "IDENTIFIED WITH", + "equals": false, + "expr": "mysql_native_password", + "value": "mysql_native_password" + } + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser2.in b/tests/data/parser/parseAlterUser2.in new file mode 100644 index 000000000..1642aa7c7 --- /dev/null +++ b/tests/data/parser/parseAlterUser2.in @@ -0,0 +1 @@ +ALTER USER 'user'@'localhost' ACCOUNT LOCK; \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser2.out b/tests/data/parser/parseAlterUser2.out new file mode 100644 index 000000000..051342a54 --- /dev/null +++ b/tests/data/parser/parseAlterUser2.out @@ -0,0 +1,200 @@ +{ + "query": "ALTER USER 'user'@'localhost' ACCOUNT LOCK;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user'@'localhost' ACCOUNT LOCK;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'localhost'", + "value": "user@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ACCOUNT", + "value": "ACCOUNT", + "keyword": "ACCOUNT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user@localhost", + "column": null, + "expr": "'user'@'localhost'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ACCOUNT", + "2": "LOCK" + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser3.in b/tests/data/parser/parseAlterUser3.in new file mode 100644 index 000000000..5bae224bd --- /dev/null +++ b/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/tests/data/parser/parseAlterUser3.out b/tests/data/parser/parseAlterUser3.out new file mode 100644 index 000000000..a5140a788 --- /dev/null +++ b/tests/data/parser/parseAlterUser3.out @@ -0,0 +1,282 @@ +{ + "query": "ALTER USER 'testosama' REQUIRE SSL WITH MAX_CONNECTIONS_PER_HOUR 20;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'testosama' REQUIRE SSL WITH MAX_CONNECTIONS_PER_HOUR 20;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testosama'", + "value": "testosama", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REQUIRE", + "value": "REQUIRE", + "keyword": "REQUIRE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SSL", + "value": "SSL", + "keyword": "SSL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_CONNECTIONS_PER_HOUR", + "value": "MAX_CONNECTIONS_PER_HOUR", + "keyword": "MAX_CONNECTIONS_PER_HOUR", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testosama", + "column": null, + "expr": "'testosama'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "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, + "partitions": null, + "unknown": [ + { + "@type": "@19" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser4.in b/tests/data/parser/parseAlterUser4.in new file mode 100644 index 000000000..4b1836f8a --- /dev/null +++ b/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/tests/data/parser/parseAlterUser4.out b/tests/data/parser/parseAlterUser4.out new file mode 100644 index 000000000..0f75011d6 --- /dev/null +++ b/tests/data/parser/parseAlterUser4.out @@ -0,0 +1,288 @@ +{ + "query": "ALTER USER 'user'\n WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_QUERIES_PER_HOUR", + "value": "MAX_QUERIES_PER_HOUR", + "keyword": "MAX_QUERIES_PER_HOUR", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "500", + "value": 500, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_UPDATES_PER_HOUR", + "value": "MAX_UPDATES_PER_HOUR", + "keyword": "MAX_UPDATES_PER_HOUR", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "100", + "value": 100, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "WITH", + "equals": false, + "expr": "MAX_QUERIES_PER_HOUR", + "value": "MAX_QUERIES_PER_HOUR" + } + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser5.in b/tests/data/parser/parseAlterUser5.in new file mode 100644 index 000000000..706e837c3 --- /dev/null +++ b/tests/data/parser/parseAlterUser5.in @@ -0,0 +1 @@ +ALTER USER 'user' PASSWORD EXPIRE NEVER \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser5.out b/tests/data/parser/parseAlterUser5.out new file mode 100644 index 000000000..cfc6e9523 --- /dev/null +++ b/tests/data/parser/parseAlterUser5.out @@ -0,0 +1,224 @@ +{ + "query": "ALTER USER 'user' PASSWORD EXPIRE NEVER", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user' PASSWORD EXPIRE NEVER", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPIRE", + "value": "EXPIRE", + "keyword": "EXPIRE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NEVER", + "value": "NEVER", + "keyword": "NEVER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "PASSWORD", + "equals": false, + "expr": "EXPIRE", + "value": "EXPIRE" + } + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "NEVER", + "expr": "NEVER", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser6.in b/tests/data/parser/parseAlterUser6.in new file mode 100644 index 000000000..1b1858e8d --- /dev/null +++ b/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/tests/data/parser/parseAlterUser6.out b/tests/data/parser/parseAlterUser6.out new file mode 100644 index 000000000..3d2914d3c --- /dev/null +++ b/tests/data/parser/parseAlterUser6.out @@ -0,0 +1,206 @@ +{ + "query": "ALTER USER 'user' ATTRIBUTE '{\"baz\": \"faz\", \"foo\": \"moo\"}';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user' ATTRIBUTE '{\"baz\": \"faz\", \"foo\": \"moo\"}';", + "len": 59, + "last": 59, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ATTRIBUTE", + "value": "ATTRIBUTE", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'{\"baz\": \"faz\", \"foo\": \"moo\"}'", + "value": "{\"baz\": \"faz\", \"foo\": \"moo\"}", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ATTRIBUTE", + "equals": false, + "expr": "'{\"baz\": \"faz\", \"foo\": \"moo\"}'", + "value": "{\"baz\": \"faz\", \"foo\": \"moo\"}" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser7.in b/tests/data/parser/parseAlterUser7.in new file mode 100644 index 000000000..d969c06e4 --- /dev/null +++ b/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/tests/data/parser/parseAlterUser7.out b/tests/data/parser/parseAlterUser7.out new file mode 100644 index 000000000..649800085 --- /dev/null +++ b/tests/data/parser/parseAlterUser7.out @@ -0,0 +1,288 @@ +{ + "query": "ALTER USER 'user' PASSWORD EXPIRE INTERVAL 180 DAY;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user' PASSWORD EXPIRE INTERVAL 180 DAY;", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPIRE", + "value": "EXPIRE", + "keyword": "EXPIRE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "180", + "value": 180, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAY", + "value": "DAY", + "keyword": "DAY", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "PASSWORD", + "equals": false, + "expr": "EXPIRE", + "value": "EXPIRE" + } + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser8.in b/tests/data/parser/parseAlterUser8.in new file mode 100644 index 000000000..e0ddefc99 --- /dev/null +++ b/tests/data/parser/parseAlterUser8.in @@ -0,0 +1 @@ +ALTER USER 'user' COMMENT '' \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser8.out b/tests/data/parser/parseAlterUser8.out new file mode 100644 index 000000000..ac71fee50 --- /dev/null +++ b/tests/data/parser/parseAlterUser8.out @@ -0,0 +1,193 @@ +{ + "query": "ALTER USER 'user' COMMENT ''", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'user' COMMENT ''", + "len": 28, + "last": 28, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "''", + "value": "" + } + } + }, + "field": null, + "partitions": null, + "unknown": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterUser9.in b/tests/data/parser/parseAlterUser9.in new file mode 100644 index 000000000..dfe9afed3 --- /dev/null +++ b/tests/data/parser/parseAlterUser9.in @@ -0,0 +1 @@ +ALTER USER 'bob'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u'); diff --git a/tests/data/parser/parseAlterUser9.out b/tests/data/parser/parseAlterUser9.out new file mode 100644 index 000000000..d07128cf2 --- /dev/null +++ b/tests/data/parser/parseAlterUser9.out @@ -0,0 +1,349 @@ +{ + "query": "ALTER USER 'bob'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u');\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ALTER USER 'bob'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u');\n", + "len": 118, + "last": 118, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'bob'@'localhost'", + "value": "bob@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED", + "value": "IDENTIFIED", + "keyword": "IDENTIFIED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIA", + "value": "VIA", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql_native_password", + "value": "mysql_native_password", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u'", + "value": "vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 16, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "bob@localhost", + "column": null, + "expr": "'bob'@'localhost'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IDENTIFIED" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "VIA", + "expr": "VIA", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@25" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAlterWithInvisible.in b/tests/data/parser/parseAlterWithInvisible.in new file mode 100644 index 000000000..fc92687e5 --- /dev/null +++ b/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/tests/data/parser/parseAlterWithInvisible.out b/tests/data/parser/parseAlterWithInvisible.out new file mode 100644 index 000000000..cf25cbf85 --- /dev/null +++ b/tests/data/parser/parseAlterWithInvisible.out @@ -0,0 +1,565 @@ +{ + "query": "ALTER TABLE t MODIFY x INT INVISIBLE, MODIFY y INT, MODIFY z INT NOT NULL DEFAULT 4;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 36, + "idx": 36, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVISIBLE", + "value": "INVISIBLE", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "y", + "value": "y", + "keyword": "Y", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "z", + "value": "z", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t", + "column": null, + "expr": "t", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "x", + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "y", + "expr": "y", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@25" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "z", + "expr": "z", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeErr1.in b/tests/data/parser/parseAnalyzeErr1.in new file mode 100644 index 000000000..f9f848bb1 --- /dev/null +++ b/tests/data/parser/parseAnalyzeErr1.in @@ -0,0 +1 @@ +ANALYZE NO_WRITE_TO_BINLOG \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeErr1.out b/tests/data/parser/parseAnalyzeErr1.out new file mode 100644 index 000000000..e4ba350d0 --- /dev/null +++ b/tests/data/parser/parseAnalyzeErr1.out @@ -0,0 +1,108 @@ +{ + "query": "ANALYZE NO_WRITE_TO_BINLOG", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ANALYZE NO_WRITE_TO_BINLOG", + "len": 26, + "last": 26, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO_WRITE_TO_BINLOG", + "value": "NO_WRITE_TO_BINLOG", + "keyword": "NO_WRITE_TO_BINLOG", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "ANALYZE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeErr2.in b/tests/data/parser/parseAnalyzeErr2.in new file mode 100644 index 000000000..b8f450db6 --- /dev/null +++ b/tests/data/parser/parseAnalyzeErr2.in @@ -0,0 +1 @@ +ANALYZE \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeErr2.out b/tests/data/parser/parseAnalyzeErr2.out new file mode 100644 index 000000000..4de4984db --- /dev/null +++ b/tests/data/parser/parseAnalyzeErr2.out @@ -0,0 +1,73 @@ +{ + "query": "ANALYZE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ANALYZE", + "len": 7, + "last": 7, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 2, + "idx": 2, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "ANALYZE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": null, + "first": 0, + "last": 0 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeTable.in b/tests/data/parser/parseAnalyzeTable.in new file mode 100644 index 000000000..abb41d8be --- /dev/null +++ b/tests/data/parser/parseAnalyzeTable.in @@ -0,0 +1 @@ +ANALYZE TABLE tbl \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeTable.out b/tests/data/parser/parseAnalyzeTable.out new file mode 100644 index 000000000..eaa0f723d --- /dev/null +++ b/tests/data/parser/parseAnalyzeTable.out @@ -0,0 +1,132 @@ +{ + "query": "ANALYZE TABLE tbl", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ANALYZE TABLE tbl", + "len": 17, + "last": 17, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": null, + "expr": "tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "TABLE" + } + }, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeTable1.in b/tests/data/parser/parseAnalyzeTable1.in new file mode 100644 index 000000000..7baab1cf2 --- /dev/null +++ b/tests/data/parser/parseAnalyzeTable1.in @@ -0,0 +1 @@ +ANALYZE NO_WRITE_TO_BINLOG TABLE tbl \ No newline at end of file diff --git a/tests/data/parser/parseAnalyzeTable1.out b/tests/data/parser/parseAnalyzeTable1.out new file mode 100644 index 000000000..15324eedf --- /dev/null +++ b/tests/data/parser/parseAnalyzeTable1.out @@ -0,0 +1,155 @@ +{ + "query": "ANALYZE NO_WRITE_TO_BINLOG TABLE tbl", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ANALYZE NO_WRITE_TO_BINLOG TABLE tbl", + "len": 36, + "last": 36, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO_WRITE_TO_BINLOG", + "value": "NO_WRITE_TO_BINLOG", + "keyword": "NO_WRITE_TO_BINLOG", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": null, + "expr": "tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "TABLE", + "2": "NO_WRITE_TO_BINLOG" + } + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseArrayErr1.out b/tests/data/parser/parseArrayErr1.out index 5adc6f9d5..6e36480db 100644 --- a/tests/data/parser/parseArrayErr1.out +++ b/tests/data/parser/parseArrayErr1.out @@ -1 +1,311 @@ -a:4:{s:5:"query";s:38:"SELECT * FROM foo PARTITION bar, baz);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:38:"SELECT * FROM foo PARTITION bar, baz);";s:3:"len";i:38;s:4:"last";i:38;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:17:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"baz";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:36;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:37;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:17;s:3:"idx";i:17;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:0:{}s:6:"values";a:0:{}}s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:14;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:32:"An opening bracket was expected.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:86;i:2;i:0;}i:2;a:3:{i:0;s:17:"Unexpected token.";i:1;r:100;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT * FROM foo PARTITION bar, baz);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM foo PARTITION bar, baz);", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [], + "values": [] + }, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An opening bracket was expected.", + { + "@type": "@16" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@17" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@19" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@20" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseArrayErr3.out b/tests/data/parser/parseArrayErr3.out index 6e27fea7d..cb91235ad 100644 --- a/tests/data/parser/parseArrayErr3.out +++ b/tests/data/parser/parseArrayErr3.out @@ -1 +1,296 @@ -a:4:{s:5:"query";s:38:"SELECT * FROM foo PARTITION (bar, baz;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:38:"SELECT * FROM foo PARTITION (bar, baz;";s:3:"len";i:38;s:4:"last";i:38;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:17:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"baz";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:37;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:17;s:3:"idx";i:17;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:3:"bar";i:1;s:3:"baz";}s:6:"values";a:2:{i:0;s:3:"bar";i:1;s:3:"baz";}}s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:15;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT * FROM foo PARTITION (bar, baz;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM foo PARTITION (bar, baz;", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "bar", + "baz" + ], + "values": [ + "bar", + "baz" + ] + }, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A closing bracket was expected.", + { + "@type": "@21" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCall.out b/tests/data/parser/parseCall.out index a3642b038..d2ac961e2 100644 --- a/tests/data/parser/parseCall.out +++ b/tests/data/parser/parseCall.out @@ -1 +1,137 @@ -a:4:{s:5:"query";s:11:"CALL foo();";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:11:"CALL foo();";s:3:"len";i:11;s:4:"last";i:11;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:7:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"CALL";s:5:"value";s:4:"CALL";s:7:"keyword";s:4:"CALL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:10;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:7;s:3:"idx";i:7;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\CallStatement":4:{s:4:"call";O:44:"PhpMyAdmin\SqlParser\Components\FunctionCall":2:{s:4:"name";s:3:"foo";s:10:"parameters";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:0:{}s:6:"values";a:0:{}}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CALL foo();", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CALL foo();", + "len": 11, + "last": 11, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 7, + "idx": 7, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CALL", + "value": "CALL", + "keyword": "CALL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "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": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCall2.out b/tests/data/parser/parseCall2.out index 049bdde3c..6a37b3af1 100644 --- a/tests/data/parser/parseCall2.out +++ b/tests/data/parser/parseCall2.out @@ -1 +1,189 @@ -a:4:{s:5:"query";s:21:"CALL foo(@bar, @baz);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:21:"CALL foo(@bar, @baz);";s:3:"len";i:21;s:4:"last";i:21;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"CALL";s:5:"value";s:4:"CALL";s:7:"keyword";s:4:"CALL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@baz";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:15;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:20;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\CallStatement":4:{s:4:"call";O:44:"PhpMyAdmin\SqlParser\Components\FunctionCall":2:{s:4:"name";s:3:"foo";s:10:"parameters";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:4:"@bar";i:1;s:4:"@baz";}s:6:"values";a:2:{i:0;s:3:"bar";i:1;s:3:"baz";}}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CALL foo(@bar, @baz);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CALL foo(@bar, @baz);", + "len": 21, + "last": 21, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CALL", + "value": "CALL", + "keyword": "CALL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@baz", + "value": "baz", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "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": null, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCall3.out b/tests/data/parser/parseCall3.out index 5f8b7b10a..49bdf7ebb 100644 --- a/tests/data/parser/parseCall3.out +++ b/tests/data/parser/parseCall3.out @@ -1 +1,109 @@ -a:4:{s:5:"query";s:9:"CALL foo;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:9:"CALL foo;";s:3:"len";i:9;s:4:"last";i:9;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"CALL";s:5:"value";s:4:"CALL";s:7:"keyword";s:4:"CALL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\CallStatement":4:{s:4:"call";O:44:"PhpMyAdmin\SqlParser\Components\FunctionCall":2:{s:4:"name";s:3:"foo";s:10:"parameters";N;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:2;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CALL foo;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CALL foo;", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CALL", + "value": "CALL", + "keyword": "CALL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "foo", + "parameters": null + }, + "options": null, + "first": 0, + "last": 2 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCall4.in b/tests/data/parser/parseCall4.in new file mode 100644 index 000000000..1fb2bf640 --- /dev/null +++ b/tests/data/parser/parseCall4.in @@ -0,0 +1 @@ +call e();call f \ No newline at end of file diff --git a/tests/data/parser/parseCall4.out b/tests/data/parser/parseCall4.out new file mode 100644 index 000000000..51f9f7b31 --- /dev/null +++ b/tests/data/parser/parseCall4.out @@ -0,0 +1,181 @@ +{ + "query": "call e();call f", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "call e();call f", + "len": 15, + "last": 15, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "call", + "value": "CALL", + "keyword": "CALL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "call", + "value": "CALL", + "keyword": "CALL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "f", + "value": "f", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "e", + "parameters": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [], + "values": [] + } + }, + "options": null, + "first": 0, + "last": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "f", + "parameters": null + }, + "options": null, + "first": 5, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCall5.in b/tests/data/parser/parseCall5.in new file mode 100644 index 000000000..c59882c0f --- /dev/null +++ b/tests/data/parser/parseCall5.in @@ -0,0 +1 @@ +call e;call f \ No newline at end of file diff --git a/tests/data/parser/parseCall5.out b/tests/data/parser/parseCall5.out new file mode 100644 index 000000000..ebe4d3a88 --- /dev/null +++ b/tests/data/parser/parseCall5.out @@ -0,0 +1,153 @@ +{ + "query": "call e;call f", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "call e;call f", + "len": 13, + "last": 13, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "call", + "value": "CALL", + "keyword": "CALL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "call", + "value": "CALL", + "keyword": "CALL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "f", + "value": "f", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "e", + "parameters": null + }, + "options": null, + "first": 0, + "last": 2 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "f", + "parameters": null + }, + "options": null, + "first": 3, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateDatabase.in b/tests/data/parser/parseCreateDatabase.in new file mode 100644 index 000000000..a163bea12 --- /dev/null +++ b/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/tests/data/parser/parseCreateDatabase.out b/tests/data/parser/parseCreateDatabase.out new file mode 100644 index 000000000..e6c8b1969 --- /dev/null +++ b/tests/data/parser/parseCreateDatabase.out @@ -0,0 +1,234 @@ +{ + "query": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "len": 57, + "last": 57, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "DATABASE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateDatabaseErr.in b/tests/data/parser/parseCreateDatabaseErr.in new file mode 100644 index 000000000..6e65e6798 --- /dev/null +++ b/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/tests/data/parser/parseCreateDatabaseErr.out b/tests/data/parser/parseCreateDatabaseErr.out new file mode 100644 index 000000000..3ba8a444b --- /dev/null +++ b/tests/data/parser/parseCreateDatabaseErr.out @@ -0,0 +1,270 @@ +{ + "query": "CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "len": 72, + "last": 72, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'InnoDB'", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "pma", + "table": null, + "column": null, + "expr": "pma", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "DATABASE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateFunction.in b/tests/data/parser/parseCreateFunction.in index 95ce5f652..f85c125e4 100644 --- a/tests/data/parser/parseCreateFunction.in +++ b/tests/data/parser/parseCreateFunction.in @@ -1,3 +1,4 @@ +DELIMITER $$ CREATE FUNCTION F_TEST(uid INT) RETURNS VARCHAR BEGIN DECLARE username VARCHAR DEFAULT ""; diff --git a/tests/data/parser/parseCreateFunction.out b/tests/data/parser/parseCreateFunction.out index 576b9f054..0ba2021c5 100644 --- a/tests/data/parser/parseCreateFunction.out +++ b/tests/data/parser/parseCreateFunction.out @@ -1,16 +1,891 @@ -a:4:{s:5:"query";s:180:"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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:180:"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";s:3:"len";i:180;s:4:"last";i:180;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:56:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"FUNCTION";s:5:"value";s:8:"FUNCTION";s:7:"keyword";s:8:"FUNCTION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"F_TEST";s:5:"value";s:6:"F_TEST";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"RETURNS";s:5:"value";s:7:"RETURNS";s:7:"keyword";s:7:"RETURNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BEGIN";s:5:"value";s:5:"BEGIN";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:48;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DECLARE";s:5:"value";s:7:"DECLARE";s:7:"keyword";s:7:"DECLARE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:58;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:66;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:75;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:83;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:90;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"""";s:5:"value";s:0:"";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:91;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:93;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:94;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:99;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:105;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:106;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:114;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:115;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:119;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:120;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:128;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:129;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:133;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:134;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:140;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:145;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ID";s:5:"value";s:2:"ID";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:146;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:149;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:150;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:151;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:154;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:155;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RETURN";s:5:"value";s:6:"RETURN";s:7:"keyword";s:6:"RETURN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:160;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:166;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:167;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:175;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:176;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:177;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:56;s:3:"idx";i:57;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"F_TEST";s:6:"column";N;s:4:"expr";s:6:"F_TEST";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"parameters";a:1:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\ParameterDefinition":3:{s:4:"name";s:3:"uid";s:5:"inOut";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}}s:4:"body";a:41:{i:0;r:114;i:1;r:121;i:2;r:128;i:3;r:135;i:4;r:142;i:5;r:149;i:6;r:156;i:7;r:163;i:8;r:170;i:9;r:177;i:10;r:184;i:11;r:191;i:12;r:198;i:13;r:205;i:14;r:212;i:15;r:219;i:16;r:226;i:17;r:233;i:18;r:240;i:19;r:247;i:20;r:254;i:21;r:261;i:22;r:268;i:23;r:275;i:24;r:282;i:25;r:289;i:26;r:296;i:27;r:303;i:28;r:310;i:29;r:317;i:30;r:324;i:31;r:331;i:32;r:338;i:33;r:345;i:34;r:352;i:35;r:359;i:36;r:366;i:37;r:373;i:38;r:380;i:39;r:387;i:40;r:394;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:8:"FUNCTION";}}s:5:"first";i:0;s:4:"last";i:56;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER $$\nCREATE 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", + "strict": false, + "errors": [], + "str": "DELIMITER $$\nCREATE 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": 193, + "last": 193, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 60, + "idx": 60, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "F_TEST", + "value": "F_TEST", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURNS", + "value": "RETURNS", + "keyword": "RETURNS", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@10" + }, + "flags": 35, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"\"", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURN", + "value": "RETURN", + "keyword": "RETURN", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "$$", + "delimiterLen": 2 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "uid", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@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" + }, + { + "@type": "@58" + }, + { + "@type": "@59" + }, + { + "@type": "@60" + }, + { + "@type": "@61" + }, + { + "@type": "@62" + }, + { + "@type": "@63" + }, + { + "@type": "@64" + }, + { + "@type": "@65" + }, + { + "@type": "@66" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 4, + "last": 59 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateFunctionErr1.in b/tests/data/parser/parseCreateFunctionErr1.in index 5678b4ed0..efd4e1a11 100644 --- a/tests/data/parser/parseCreateFunctionErr1.in +++ b/tests/data/parser/parseCreateFunctionErr1.in @@ -1,3 +1,4 @@ +DELIMITER $$ CREATE FUNCTION F_TEST(uid INT) BEGIN DECLARE username VARCHAR DEFAULT ""; diff --git a/tests/data/parser/parseCreateFunctionErr1.out b/tests/data/parser/parseCreateFunctionErr1.out index 7ac97deea..86cd343ba 100644 --- a/tests/data/parser/parseCreateFunctionErr1.out +++ b/tests/data/parser/parseCreateFunctionErr1.out @@ -1,16 +1,840 @@ -a:4:{s:5:"query";s:164:"CREATE FUNCTION F_TEST(uid INT) -BEGIN - DECLARE username VARCHAR DEFAULT ""; - SELECT username INTO username FROM users WHERE ID = uid; - RETURN username; -END";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:164:"CREATE FUNCTION F_TEST(uid INT) -BEGIN - DECLARE username VARCHAR DEFAULT ""; - SELECT username INTO username FROM users WHERE ID = uid; - RETURN username; -END";s:3:"len";i:164;s:4:"last";i:164;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:52:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"FUNCTION";s:5:"value";s:8:"FUNCTION";s:7:"keyword";s:8:"FUNCTION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"F_TEST";s:5:"value";s:6:"F_TEST";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BEGIN";s:5:"value";s:5:"BEGIN";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DECLARE";s:5:"value";s:7:"DECLARE";s:7:"keyword";s:7:"DECLARE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:59;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:67;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"""";s:5:"value";s:0:"";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:75;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:77;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:78;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:83;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:90;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:99;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:103;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:104;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:113;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:117;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:118;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:123;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:124;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ID";s:5:"value";s:2:"ID";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:130;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:132;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:133;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:134;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:135;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:138;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RETURN";s:5:"value";s:6:"RETURN";s:7:"keyword";s:6:"RETURN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:144;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:150;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:151;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:159;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:160;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:161;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:52;s:3:"idx";i:53;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"F_TEST";s:6:"column";N;s:4:"expr";s:6:"F_TEST";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";a:1:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\ParameterDefinition":3:{s:4:"name";s:3:"uid";s:5:"inOut";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}}s:4:"body";a:39:{i:0;r:100;i:1;r:107;i:2;r:114;i:3;r:121;i:4;r:128;i:5;r:135;i:6;r:142;i:7;r:149;i:8;r:156;i:9;r:163;i:10;r:170;i:11;r:177;i:12;r:184;i:13;r:191;i:14;r:198;i:15;r:205;i:16;r:212;i:17;r:219;i:18;r:226;i:19;r:233;i:20;r:240;i:21;r:247;i:22;r:254;i:23;r:261;i:24;r:268;i:25;r:275;i:26;r:282;i:27;r:289;i:28;r:296;i:29;r:303;i:30;r:310;i:31;r:317;i:32;r:324;i:33;r:331;i:34;r:338;i:35;r:345;i:36;r:352;i:37;r:359;i:38;r:366;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:8:"FUNCTION";}}s:5:"first";i:0;s:4:"last";i:52;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:33:"A "RETURNS" keyword was expected.";i:1;r:86;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELIMITER $$\nCREATE 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", + "strict": false, + "errors": [], + "str": "DELIMITER $$\nCREATE 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": 177, + "last": 177, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 56, + "idx": 56, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "F_TEST", + "value": "F_TEST", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@10" + }, + "flags": 35, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"\"", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURN", + "value": "RETURN", + "keyword": "RETURN", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "$$", + "delimiterLen": 2 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "with": 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", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@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" + }, + { + "@type": "@58" + }, + { + "@type": "@59" + }, + { + "@type": "@60" + }, + { + "@type": "@61" + }, + { + "@type": "@62" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 4, + "last": 55 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A \"RETURNS\" keyword was expected.", + { + "@type": "@22" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateFunctionErr2.out b/tests/data/parser/parseCreateFunctionErr2.out index 39903d50b..eef7c6e56 100644 --- a/tests/data/parser/parseCreateFunctionErr2.out +++ b/tests/data/parser/parseCreateFunctionErr2.out @@ -1 +1,193 @@ -a:4:{s:5:"query";s:30:"CREATE FUNCTION test() RETURNS";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:30:"CREATE FUNCTION test() RETURNS";s:3:"len";i:30;s:4:"last";i:30;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"FUNCTION";s:5:"value";s:8:"FUNCTION";s:7:"keyword";s:8:"FUNCTION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"RETURNS";s:5:"value";s:7:"RETURNS";s:7:"keyword";s:7:"RETURNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:23;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:12;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";a:0:{}s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:8:"FUNCTION";}}s:5:"first";i:0;s:4:"last";i:11;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE FUNCTION test() RETURNS", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE FUNCTION test() RETURNS", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURNS", + "value": "RETURNS", + "keyword": "RETURNS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [], + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateFunctionErr3.in b/tests/data/parser/parseCreateFunctionErr3.in index 4b73a76b1..80172a5a3 100644 --- a/tests/data/parser/parseCreateFunctionErr3.in +++ b/tests/data/parser/parseCreateFunctionErr3.in @@ -1,3 +1,3 @@ -DELIMITER$$ +DELIMITER $$ CREATE FUNCTION coincide END;$$ diff --git a/tests/data/parser/parseCreateFunctionErr3.out b/tests/data/parser/parseCreateFunctionErr3.out index 194d85d07..1a03be119 100644 --- a/tests/data/parser/parseCreateFunctionErr3.out +++ b/tests/data/parser/parseCreateFunctionErr3.out @@ -1,10 +1,256 @@ -a:4:{s:5:"query";s:44:"DELIMITER$$ -CREATE FUNCTION coincide -END;$$ -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:44:"DELIMITER$$ -CREATE FUNCTION coincide -END;$$ -";s:3:"len";i:44;s:4:"last";i:44;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"$";s:5:"value";s:1:"$";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:10;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"FUNCTION";s:5:"value";s:8:"FUNCTION";s:7:"keyword";s:8:"FUNCTION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"coincide";s:5:"value";s:8:"coincide";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:37;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"$";s:5:"value";s:1:"$";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"$";s:5:"value";s:1:"$";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:17;}s:9:"delimiter";s:1:"$";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"coincide";s:6:"column";N;s:4:"expr";s:8:"coincide";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";a:0:{}s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:8:"FUNCTION";}}s:5:"first";i:3;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:33:"A "RETURNS" keyword was expected.";i:1;r:72;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELIMITER $$\nCREATE FUNCTION coincide\nEND;$$\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER $$\nCREATE FUNCTION coincide\nEND;$$\n", + "len": 45, + "last": 45, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "coincide", + "value": "coincide", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "$$", + "delimiterLen": 2 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "coincide", + "column": null, + "expr": "coincide", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [], + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 4, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A \"RETURNS\" keyword was expected.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateOrReplaceView1.in b/tests/data/parser/parseCreateOrReplaceView1.in new file mode 100644 index 000000000..063b551a6 --- /dev/null +++ b/tests/data/parser/parseCreateOrReplaceView1.in @@ -0,0 +1 @@ +CREATE OR REPLACE VIEW xviewmytable AS SELECT mytable.id AS id, mytable.personid AS personid FROM mytable WHERE (mytable.birth > '1990-01-19') GROUP BY mytable.personid ; \ No newline at end of file diff --git a/tests/data/parser/parseCreateOrReplaceView1.out b/tests/data/parser/parseCreateOrReplaceView1.out new file mode 100644 index 000000000..76ca24b3e --- /dev/null +++ b/tests/data/parser/parseCreateOrReplaceView1.out @@ -0,0 +1,750 @@ +{ + "query": "CREATE OR REPLACE VIEW xviewmytable AS SELECT mytable.id AS id, mytable.personid AS personid FROM mytable WHERE (mytable.birth > '1990-01-19') GROUP BY mytable.personid ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE OR REPLACE VIEW xviewmytable AS SELECT mytable.id AS id, mytable.personid AS personid FROM mytable WHERE (mytable.birth > '1990-01-19') GROUP BY mytable.personid ;", + "len": 172, + "last": 172, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 53, + "idx": 53, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OR REPLACE", + "value": "OR REPLACE", + "keyword": "OR REPLACE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "xviewmytable", + "value": "xviewmytable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mytable", + "value": "mytable", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mytable", + "value": "mytable", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "personid", + "value": "personid", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "personid", + "value": "personid", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mytable", + "value": "mytable", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mytable", + "value": "mytable", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "birth", + "value": "birth", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'1990-01-19'", + "value": "1990-01-19", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mytable", + "value": "mytable", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 16, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "personid", + "value": "personid", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@59" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "xviewmytable", + "column": null, + "expr": "xviewmytable", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "mytable", + "column": "id", + "expr": "mytable.id", + "alias": "id", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "mytable", + "column": "personid", + "expr": "mytable.personid", + "alias": "personid", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "mytable", + "column": null, + "expr": "mytable", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "mytable", + "birth", + "1990-01-19" + ], + "isOperator": false, + "expr": "(mytable.birth > '1990-01-19')", + "leftOperand": "(mytable.birth", + "operator": ">", + "rightOperand": "'1990-01-19')" + } + ], + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "mytable", + "column": "personid", + "expr": "mytable.personid", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 10, + "last": 50 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "OR REPLACE", + "6": "VIEW" + } + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateProcedure.in b/tests/data/parser/parseCreateProcedure.in index b5e35c188..019eeb1f0 100644 --- a/tests/data/parser/parseCreateProcedure.in +++ b/tests/data/parser/parseCreateProcedure.in @@ -1,3 +1,4 @@ +DELIMITER $$ CREATE PROCEDURE P_TEST(uid INT) BEGIN SELECT username FROM users WHERE ID = uid; diff --git a/tests/data/parser/parseCreateProcedure.out b/tests/data/parser/parseCreateProcedure.out index 09109d1c5..bfb3c99a2 100644 --- a/tests/data/parser/parseCreateProcedure.out +++ b/tests/data/parser/parseCreateProcedure.out @@ -1,10 +1,556 @@ -a:4:{s:5:"query";s:89:"CREATE PROCEDURE P_TEST(uid INT) -BEGIN - SELECT username FROM users WHERE ID = uid; -END";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:89:"CREATE PROCEDURE P_TEST(uid INT) -BEGIN - SELECT username FROM users WHERE ID = uid; -END";s:3:"len";i:89;s:4:"last";i:89;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:32:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PROCEDURE";s:5:"value";s:9:"PROCEDURE";s:7:"keyword";s:9:"PROCEDURE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"P_TEST";s:5:"value";s:6:"P_TEST";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:24;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:28;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:31;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BEGIN";s:5:"value";s:5:"BEGIN";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:43;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:59;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:64;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:70;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ID";s:5:"value";s:2:"ID";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:76;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:78;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:79;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:81;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:84;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:86;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:32;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"P_TEST";s:6:"column";N;s:4:"expr";s:6:"P_TEST";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";a:1:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\ParameterDefinition":3:{s:4:"name";s:3:"uid";s:5:"inOut";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}}s:4:"body";a:21:{i:0;r:86;i:1;r:93;i:2;r:100;i:3;r:107;i:4;r:114;i:5;r:121;i:6;r:128;i:7;r:135;i:8;r:142;i:9;r:149;i:10;r:156;i:11;r:163;i:12;r:170;i:13;r:177;i:14;r:184;i:15;r:191;i:16;r:198;i:17;r:205;i:18;r:212;i:19;r:219;i:20;r:226;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:9:"PROCEDURE";}}s:5:"first";i:0;s:4:"last";i:32;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER $$\nCREATE PROCEDURE P_TEST(uid INT)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER $$\nCREATE PROCEDURE P_TEST(uid INT)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "len": 102, + "last": 102, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 36, + "idx": 36, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "P_TEST", + "value": "P_TEST", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "$$", + "delimiterLen": 2 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "with": 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", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "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" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "PROCEDURE" + } + }, + "first": 4, + "last": 35 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateProcedure1.in b/tests/data/parser/parseCreateProcedure1.in new file mode 100644 index 000000000..17d674477 --- /dev/null +++ b/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/tests/data/parser/parseCreateProcedure1.out b/tests/data/parser/parseCreateProcedure1.out new file mode 100644 index 000000000..d1b6faad8 --- /dev/null +++ b/tests/data/parser/parseCreateProcedure1.out @@ -0,0 +1,481 @@ +{ + "query": "CREATE DEFINER=`root`@`%` PROCEDURE `test2`(IN `_var` INT) NOT DETERMINISTIC NO SQL SQL SECURITY INVOKER SELECT _var", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 31, + "idx": 31, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`%`", + "value": "root@%", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test2`", + "value": "test2", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`_var`", + "value": "_var", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DETERMINISTIC", + "value": "DETERMINISTIC", + "keyword": "DETERMINISTIC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO SQL", + "value": "NO SQL", + "keyword": "NO SQL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "_var", + "value": "_var", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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": "NO SQL", + "6": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + } + } + }, + "fields": null, + "with": 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", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "root@%", + "expr": "`root`@`%`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`root`@`%`" + }, + "6": "PROCEDURE" + } + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateProcedure2.in b/tests/data/parser/parseCreateProcedure2.in index e24b92eac..061aee354 100644 --- a/tests/data/parser/parseCreateProcedure2.in +++ b/tests/data/parser/parseCreateProcedure2.in @@ -1,3 +1,4 @@ +DELIMITER $$ CREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR) BEGIN SELECT username FROM users WHERE ID = uid; diff --git a/tests/data/parser/parseCreateProcedure2.out b/tests/data/parser/parseCreateProcedure2.out index 11e4cee91..4436acbd5 100644 --- a/tests/data/parser/parseCreateProcedure2.out +++ b/tests/data/parser/parseCreateProcedure2.out @@ -1,10 +1,670 @@ -a:4:{s:5:"query";s:111:"CREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR) -BEGIN - SELECT username FROM users WHERE ID = uid; -END";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:111:"CREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR) -BEGIN - SELECT username FROM users WHERE ID = uid; -END";s:3:"len";i:111;s:4:"last";i:111;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:41:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PROCEDURE";s:5:"value";s:9:"PROCEDURE";s:7:"keyword";s:9:"PROCEDURE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"P_TEST";s:5:"value";s:6:"P_TEST";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IN";s:5:"value";s:2:"IN";s:7:"keyword";s:2:"IN";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:24;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IN";s:5:"value";s:2:"IN";s:7:"keyword";s:2:"IN";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:36;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"unused";s:5:"value";s:6:"unused";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:53;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BEGIN";s:5:"value";s:5:"BEGIN";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:65;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:72;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:92;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ID";s:5:"value";s:2:"ID";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:98;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:101;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"uid";s:5:"value";s:3:"uid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:103;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:106;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:41;s:3:"idx";i:42;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"P_TEST";s:6:"column";N;s:4:"expr";s:6:"P_TEST";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";a:2:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\ParameterDefinition":3:{s:4:"name";s:3:"uid";s:5:"inOut";s:2:"IN";s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\ParameterDefinition":3:{s:4:"name";s:6:"unused";s:5:"inOut";s:2:"IN";s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}}s:4:"body";a:21:{i:0;r:149;i:1;r:156;i:2;r:163;i:3;r:170;i:4;r:177;i:5;r:184;i:6;r:191;i:7;r:198;i:8;r:205;i:9;r:212;i:10;r:219;i:11;r:226;i:12;r:233;i:13;r:240;i:14;r:247;i:15;r:254;i:16;r:261;i:17;r:268;i:18;r:275;i:19;r:282;i:20;r:289;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:9:"PROCEDURE";}}s:5:"first";i:0;s:4:"last";i:41;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELIMITER $$\nCREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELIMITER $$\nCREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "len": 124, + "last": 124, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 45, + "idx": 45, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "P_TEST", + "value": "P_TEST", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@10" + }, + "flags": 35, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@10" + }, + "flags": 35, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unused", + "value": "unused", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@10" + }, + "flags": 11, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@10" + }, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@10" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "$$", + "delimiterLen": 2 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "with": 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", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "unused", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@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" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "PROCEDURE" + } + }, + "first": 4, + "last": 44 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateProcedure3.in b/tests/data/parser/parseCreateProcedure3.in new file mode 100644 index 000000000..60b7559db --- /dev/null +++ b/tests/data/parser/parseCreateProcedure3.in @@ -0,0 +1,29 @@ +DELIMITER $$ +CREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V1`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN +SET @TABLE_NAME = table_name_var; +SET @WHERE_TEXT = where_text_var; +SET @COLUMNS_USED = columns_used_var; +SET @MULTIDB_QUERY = CONCAT('SELECT "$MULTIDB" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT); + +-- EXECUTION -- +CREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS +SELECT * FROM ( + SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME + FROM INFORMATION_SCHEMA.COLUMNS + WHERE + TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND + TABLE_NAME = @TABLE_NAME AND + FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED) +) tbl +GROUP BY + TABLE_SCHEMA, + TABLE_NAME; + +SELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR "\nUNION ALL\n") +INTO @stmt_sql +FROM `MULTIDB_TEMP_DB_TBL_COLS`; + +PREPARE stmt FROM @stmt_sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +END \ No newline at end of file diff --git a/tests/data/parser/parseCreateProcedure3.out b/tests/data/parser/parseCreateProcedure3.out new file mode 100644 index 000000000..66d3cf2ec --- /dev/null +++ b/tests/data/parser/parseCreateProcedure3.out @@ -0,0 +1,3738 @@ +{ + "query": "DELIMITER $$\nCREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V1`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN\nSET @TABLE_NAME = table_name_var;\nSET @WHERE_TEXT = where_text_var;\nSET @COLUMNS_USED = columns_used_var;\nSET @MULTIDB_QUERY = CONCAT('SELECT \"$MULTIDB\" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT);\n\n-- EXECUTION --\nCREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS\nSELECT * FROM (\n SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME\n FROM INFORMATION_SCHEMA.COLUMNS\n WHERE\n TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND\n TABLE_NAME = @TABLE_NAME AND\n FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED)\n) tbl\nGROUP BY\n TABLE_SCHEMA,\n TABLE_NAME;\n\nSELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR \"\\nUNION ALL\\n\")\nINTO @stmt_sql\nFROM `MULTIDB_TEMP_DB_TBL_COLS`;\n\nPREPARE stmt FROM @stmt_sql;\nEXECUTE stmt;\nDEALLOCATE PREPARE stmt;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": { + "@type": "PhpMyAdmin\\SqlParser\\UtfString", + "str": "DELIMITER $$\nCREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V1`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN\nSET @TABLE_NAME = table_name_var;\nSET @WHERE_TEXT = where_text_var;\nSET @COLUMNS_USED = columns_used_var;\nSET @MULTIDB_QUERY = CONCAT('SELECT \"$MULTIDB\" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT);\n\n-- EXECUTION --\nCREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS\nSELECT * FROM (\n SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME\n FROM INFORMATION_SCHEMA.COLUMNS\n WHERE\n TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND\n TABLE_NAME = @TABLE_NAME AND\n FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED)\n) tbl\nGROUP BY\n TABLE_SCHEMA,\n TABLE_NAME;\n\nSELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR \"\\nUNION ALL\\n\")\nINTO @stmt_sql\nFROM `MULTIDB_TEMP_DB_TBL_COLS`;\n\nPREPARE stmt FROM @stmt_sql;\nEXECUTE stmt;\nDEALLOCATE PREPARE stmt;\nEND" + }, + "len": 1173, + "last": 1173, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 267, + "idx": 267, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user`@`localhost`", + "value": "user@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`multiDBqueryRun_V1`", + "value": "multiDBqueryRun_V1", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`query`", + "value": "query", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table_name_var`", + "value": "table_name_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`columns_used_var`", + "value": "columns_used_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`where_text_var`", + "value": "where_text_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`separator_value_var`", + "value": "separator_value_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Query: SingleDB → MultiDB (All DBs) + run it'", + "value": "Query: SingleDB → MultiDB (All DBs) + run it", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DETERMINISTIC", + "value": "DETERMINISTIC", + "keyword": "DETERMINISTIC", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFIES SQL DATA", + "value": "MODIFIES SQL DATA", + "keyword": "MODIFIES SQL DATA", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@TABLE_NAME", + "value": "TABLE_NAME", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name_var", + "value": "table_name_var", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@WHERE_TEXT", + "value": "WHERE_TEXT", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where_text_var", + "value": "where_text_var", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@COLUMNS_USED", + "value": "COLUMNS_USED", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "columns_used_var", + "value": "columns_used_var", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@MULTIDB_QUERY", + "value": "MULTIDB_QUERY", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCAT", + "value": "CONCAT", + "keyword": "CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'SELECT \"$MULTIDB\" FROM `$MULTIDB`.'", + "value": "SELECT \"$MULTIDB\" FROM `$MULTIDB`.", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@TABLE_NAME", + "value": "TABLE_NAME", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@WHERE_TEXT", + "value": "WHERE_TEXT", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- EXECUTION --", + "value": "-- EXECUTION --", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 555 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 556 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEMPORARY", + "value": "TEMPORARY", + "keyword": "TEMPORARY", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`MULTIDB_TEMP_DB_TBL_COLS`", + "value": "MULTIDB_TEMP_DB_TBL_COLS", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 615 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 616 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 622 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 623 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 634 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_NAME", + "value": "TABLE_NAME", + "keyword": "TABLE_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN_NAME", + "value": "COLUMN_NAME", + "keyword": "COLUMN_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 671 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFORMATION_SCHEMA", + "value": "INFORMATION_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 697 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT IN", + "value": "NOT IN", + "keyword": "NOT IN", + "type": { + "@type": "@11" + }, + "flags": 39, + "position": 731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql'", + "value": "mysql", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'test'", + "value": "test", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 753 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'tmp'", + "value": "tmp", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 760 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 761 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'information_schema'", + "value": "information_schema", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'sys'", + "value": "sys", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'performance_schema'", + "value": "performance_schema", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_NAME", + "value": "TABLE_NAME", + "keyword": "TABLE_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@TABLE_NAME", + "value": "TABLE_NAME", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 834 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 849 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIND_IN_SET", + "value": "FIND_IN_SET", + "keyword": "FIND_IN_SET", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 854 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN_NAME", + "value": "COLUMN_NAME", + "keyword": "COLUMN_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@COLUMNS_USED", + "value": "COLUMNS_USED", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 892 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 893 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 908 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 911 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_NAME", + "value": "TABLE_NAME", + "keyword": "TABLE_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 937 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 946 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP_CONCAT", + "value": "GROUP_CONCAT", + "keyword": "GROUP_CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 947 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 959 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 960 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 967 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@MULTIDB_QUERY", + "value": "MULTIDB_QUERY", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 983 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'$MULTIDB'", + "value": "$MULTIDB", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 984 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 995 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCAT", + "value": "CONCAT", + "keyword": "CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 996 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1002 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1024 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1025 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SEPARATOR", + "value": "SEPARATOR", + "keyword": "SEPARATOR", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1026 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"\\nUNION ALL\\n\"", + "value": "\nUNION ALL\n", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 2, + "position": 1036 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@stmt_sql", + "value": "stmt_sql", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 1058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1067 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`MULTIDB_TEMP_DB_TBL_COLS`", + "value": "MULTIDB_TEMP_DB_TBL_COLS", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 1073 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1099 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PREPARE", + "value": "PREPARE", + "keyword": "PREPARE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "stmt", + "value": "stmt", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@stmt_sql", + "value": "stmt_sql", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 1120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXECUTE", + "value": "EXECUTE", + "keyword": "EXECUTE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "stmt", + "value": "stmt", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEALLOCATE", + "value": "DEALLOCATE", + "keyword": "DEALLOCATE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PREPARE", + "value": "PREPARE", + "keyword": "PREPARE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "stmt", + "value": "stmt", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": "$$", + "delimiterLen": 2 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@2" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "multiDBqueryRun_V1", + "column": null, + "expr": "`multiDBqueryRun_V1`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "NOT", + "equals": false, + "expr": "DETERMINISTIC", + "value": "DETERMINISTIC" + }, + "4": "MODIFIES SQL DATA", + "6": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + }, + "8": { + "name": "COMMENT", + "equals": false, + "expr": "'Query: SingleDB → MultiDB (All DBs) + run it'", + "value": "Query: SingleDB → MultiDB (All DBs) + run it" + } + } + }, + "fields": null, + "with": 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": "query", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "table_name_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "columns_used_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "where_text_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "separator_value_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@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": "@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" + }, + { + "@type": "@150" + }, + { + "@type": "@151" + }, + { + "@type": "@152" + }, + { + "@type": "@153" + }, + { + "@type": "@154" + }, + { + "@type": "@155" + }, + { + "@type": "@156" + }, + { + "@type": "@157" + }, + { + "@type": "@158" + }, + { + "@type": "@159" + }, + { + "@type": "@160" + }, + { + "@type": "@161" + }, + { + "@type": "@162" + }, + { + "@type": "@163" + }, + { + "@type": "@164" + }, + { + "@type": "@165" + }, + { + "@type": "@166" + }, + { + "@type": "@167" + }, + { + "@type": "@168" + }, + { + "@type": "@169" + }, + { + "@type": "@170" + }, + { + "@type": "@171" + }, + { + "@type": "@172" + }, + { + "@type": "@173" + }, + { + "@type": "@174" + }, + { + "@type": "@175" + }, + { + "@type": "@176" + }, + { + "@type": "@177" + }, + { + "@type": "@178" + }, + { + "@type": "@179" + }, + { + "@type": "@180" + }, + { + "@type": "@181" + }, + { + "@type": "@182" + }, + { + "@type": "@183" + }, + { + "@type": "@184" + }, + { + "@type": "@185" + }, + { + "@type": "@186" + }, + { + "@type": "@187" + }, + { + "@type": "@188" + }, + { + "@type": "@189" + }, + { + "@type": "@190" + }, + { + "@type": "@191" + }, + { + "@type": "@192" + }, + { + "@type": "@193" + }, + { + "@type": "@194" + }, + { + "@type": "@195" + }, + { + "@type": "@196" + }, + { + "@type": "@197" + }, + { + "@type": "@198" + }, + { + "@type": "@199" + }, + { + "@type": "@200" + }, + { + "@type": "@201" + }, + { + "@type": "@202" + }, + { + "@type": "@203" + }, + { + "@type": "@204" + }, + { + "@type": "@205" + }, + { + "@type": "@206" + }, + { + "@type": "@207" + }, + { + "@type": "@208" + }, + { + "@type": "@209" + }, + { + "@type": "@210" + }, + { + "@type": "@211" + }, + { + "@type": "@212" + }, + { + "@type": "@213" + }, + { + "@type": "@214" + }, + { + "@type": "@215" + }, + { + "@type": "@216" + }, + { + "@type": "@217" + }, + { + "@type": "@218" + }, + { + "@type": "@219" + }, + { + "@type": "@220" + }, + { + "@type": "@221" + }, + { + "@type": "@222" + }, + { + "@type": "@223" + }, + { + "@type": "@224" + }, + { + "@type": "@225" + }, + { + "@type": "@226" + }, + { + "@type": "@227" + }, + { + "@type": "@228" + }, + { + "@type": "@229" + }, + { + "@type": "@230" + }, + { + "@type": "@231" + }, + { + "@type": "@232" + }, + { + "@type": "@233" + }, + { + "@type": "@234" + }, + { + "@type": "@235" + }, + { + "@type": "@236" + }, + { + "@type": "@237" + }, + { + "@type": "@238" + }, + { + "@type": "@239" + }, + { + "@type": "@240" + }, + { + "@type": "@241" + }, + { + "@type": "@242" + }, + { + "@type": "@243" + }, + { + "@type": "@244" + }, + { + "@type": "@245" + }, + { + "@type": "@246" + }, + { + "@type": "@247" + }, + { + "@type": "@248" + }, + { + "@type": "@249" + }, + { + "@type": "@250" + }, + { + "@type": "@251" + }, + { + "@type": "@252" + }, + { + "@type": "@253" + }, + { + "@type": "@254" + }, + { + "@type": "@255" + }, + { + "@type": "@256" + }, + { + "@type": "@257" + }, + { + "@type": "@258" + }, + { + "@type": "@259" + }, + { + "@type": "@260" + }, + { + "@type": "@261" + }, + { + "@type": "@262" + }, + { + "@type": "@263" + }, + { + "@type": "@264" + }, + { + "@type": "@265" + }, + { + "@type": "@266" + }, + { + "@type": "@267" + }, + { + "@type": "@268" + }, + { + "@type": "@269" + }, + { + "@type": "@270" + }, + { + "@type": "@271" + }, + { + "@type": "@272" + }, + { + "@type": "@273" + }, + { + "@type": "@274" + }, + { + "@type": "@275" + }, + { + "@type": "@276" + }, + { + "@type": "@277" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "user@localhost", + "expr": "`user`@`localhost`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`user`@`localhost`" + }, + "6": "PROCEDURE" + } + }, + "first": 4, + "last": 266 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateProcedure4.in b/tests/data/parser/parseCreateProcedure4.in new file mode 100644 index 000000000..372574bfe --- /dev/null +++ b/tests/data/parser/parseCreateProcedure4.in @@ -0,0 +1,93 @@ +DELIMITER $$ +CREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V12`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN +SET @TABLE_NAME = table_name_var; +SET @WHERE_TEXT = where_text_var; +SET @COLUMNS_USED = columns_used_var; +SET @MULTIDB_QUERY = CONCAT('SELECT "$MULTIDB" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT); + +-- EXECUTION -- +CREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS +SELECT * FROM ( + SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME + FROM INFORMATION_SCHEMA.COLUMNS + WHERE + TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND + TABLE_NAME = @TABLE_NAME AND + FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED) +) tbl +GROUP BY + TABLE_SCHEMA, + TABLE_NAME; + +SELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR "\nUNION ALL\n") +INTO @stmt_sql +FROM `MULTIDB_TEMP_DB_TBL_COLS`; + +PREPARE stmt FROM @stmt_sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +END$$ + +-- +-- Functions +-- +DELIMITER $$ +CREATE DEFINER=`root`@`localhost` FUNCTION `attrParentShiftIds` (`parent_id` TEXT, `option_id_shift` INT, `option_value_id_shift` INT) RETURNS TEXT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci DETERMINISTIC READS SQL DATA SQL SECURITY INVOKER BEGIN + DECLARE i INT UNSIGNED DEFAULT 0; + DECLARE pair_count INT UNSIGNED; + DECLARE result TEXT DEFAULT ''; + + DECLARE pair VARCHAR(255) DEFAULT ''; + DECLARE oid INT DEFAULT ''; + DECLARE vid INT DEFAULT ''; + + SET pair_count = substrCount(parent_id, ',') + 1; + + WHILE i < pair_count DO + SET result = CONCAT(result, IF(i <= 0, '', ',')); + + SET pair = split(parent_id, ',', i + 1); + + SET oid = split(pair, '-', 1) + option_id_shift; + SET vid = split(pair, '-', 2) + option_value_id_shift; + + SET pair = CONCAT(oid, '-', vid); + SET result = CONCAT(result, pair); + + SET i = i + 1; + END WHILE; + + RETURN result; +END$$ + +DELIMITER $$ +CREATE DEFINER=`user`@`localhost` FUNCTION `split` (`string` TEXT, `delim` TEXT, `n` INT) RETURNS TEXT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci DETERMINISTIC SQL SECURITY INVOKER RETURN IF( + (LENGTH(string) - LENGTH(REPLACE(string, delim, ''))) / LENGTH(delim) < n - 1, + NULL, + SUBSTRING_INDEX(SUBSTRING_INDEX(string, delim, n), delim, -1) +)$$ + +DELIMITER $$ +CREATE DEFINER=`root`@`localhost` FUNCTION `substrCount` (`s` VARCHAR(255), `ss` VARCHAR(255)) RETURNS TINYINT(3) UNSIGNED DETERMINISTIC READS SQL DATA SQL SECURITY INVOKER BEGIN +DECLARE COUNT TINYINT(3) UNSIGNED; +DECLARE OFFSET_I TINYINT(3) UNSIGNED; +DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = NULL; + +SET COUNT = 0; +SET OFFSET_I = 1; + +REPEAT +IF NOT ISNULL(s) AND OFFSET_I > 0 THEN +SET OFFSET_I = LOCATE(ss, s, OFFSET_I); +IF OFFSET_I > 0 THEN +SET COUNT = COUNT + 1; +SET OFFSET_I = OFFSET_I + 1; +END IF; +END IF; +UNTIL ISNULL(s) OR OFFSET_I = 0 END REPEAT; + +RETURN COUNT; +END$$ + +DELIMITER ; + diff --git a/tests/data/parser/parseCreateProcedure4.out b/tests/data/parser/parseCreateProcedure4.out new file mode 100644 index 000000000..ffa346593 --- /dev/null +++ b/tests/data/parser/parseCreateProcedure4.out @@ -0,0 +1,12844 @@ +{ + "query": "DELIMITER $$\nCREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V12`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN\nSET @TABLE_NAME = table_name_var;\nSET @WHERE_TEXT = where_text_var;\nSET @COLUMNS_USED = columns_used_var;\nSET @MULTIDB_QUERY = CONCAT('SELECT \"$MULTIDB\" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT);\n\n-- EXECUTION --\nCREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS\nSELECT * FROM (\n SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME\n FROM INFORMATION_SCHEMA.COLUMNS\n WHERE\n TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND\n TABLE_NAME = @TABLE_NAME AND\n FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED)\n) tbl\nGROUP BY\n TABLE_SCHEMA,\n TABLE_NAME;\n\nSELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR \"\\nUNION ALL\\n\")\nINTO @stmt_sql\nFROM `MULTIDB_TEMP_DB_TBL_COLS`;\n\nPREPARE stmt FROM @stmt_sql;\nEXECUTE stmt;\nDEALLOCATE PREPARE stmt;\nEND$$\n\n--\n-- Functions\n--\nDELIMITER $$\nCREATE DEFINER=`root`@`localhost` FUNCTION `attrParentShiftIds` (`parent_id` TEXT, `option_id_shift` INT, `option_value_id_shift` INT) RETURNS TEXT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci DETERMINISTIC READS SQL DATA SQL SECURITY INVOKER BEGIN\n DECLARE i INT UNSIGNED DEFAULT 0;\n DECLARE pair_count INT UNSIGNED;\n DECLARE result TEXT DEFAULT '';\n\n DECLARE pair VARCHAR(255) DEFAULT '';\n DECLARE oid INT DEFAULT '';\n DECLARE vid INT DEFAULT '';\n\n SET pair_count = substrCount(parent_id, ',') + 1;\n\n WHILE i < pair_count DO\n SET result = CONCAT(result, IF(i <= 0, '', ','));\n\n SET pair = split(parent_id, ',', i + 1);\n\n SET oid = split(pair, '-', 1) + option_id_shift;\n SET vid = split(pair, '-', 2) + option_value_id_shift;\n\n SET pair = CONCAT(oid, '-', vid);\n SET result = CONCAT(result, pair);\n\n SET i = i + 1;\n END WHILE;\n\n RETURN result;\nEND$$\n\nDELIMITER $$\nCREATE DEFINER=`user`@`localhost` FUNCTION `split` (`string` TEXT, `delim` TEXT, `n` INT) RETURNS TEXT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci DETERMINISTIC SQL SECURITY INVOKER RETURN IF(\n (LENGTH(string) - LENGTH(REPLACE(string, delim, ''))) / LENGTH(delim) < n - 1,\n NULL,\n SUBSTRING_INDEX(SUBSTRING_INDEX(string, delim, n), delim, -1)\n)$$\n\nDELIMITER $$\nCREATE DEFINER=`root`@`localhost` FUNCTION `substrCount` (`s` VARCHAR(255), `ss` VARCHAR(255)) RETURNS TINYINT(3) UNSIGNED DETERMINISTIC READS SQL DATA SQL SECURITY INVOKER BEGIN\nDECLARE COUNT TINYINT(3) UNSIGNED;\nDECLARE OFFSET_I TINYINT(3) UNSIGNED;\nDECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = NULL;\n\nSET COUNT = 0;\nSET OFFSET_I = 1;\n\nREPEAT\nIF NOT ISNULL(s) AND OFFSET_I > 0 THEN\nSET OFFSET_I = LOCATE(ss, s, OFFSET_I);\nIF OFFSET_I > 0 THEN\nSET COUNT = COUNT + 1;\nSET OFFSET_I = OFFSET_I + 1;\nEND IF;\nEND IF;\nUNTIL ISNULL(s) OR OFFSET_I = 0 END REPEAT;\n\nRETURN COUNT;\nEND$$\n\nDELIMITER ;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": { + "@type": "PhpMyAdmin\\SqlParser\\UtfString", + "str": "DELIMITER $$\nCREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V12`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN\nSET @TABLE_NAME = table_name_var;\nSET @WHERE_TEXT = where_text_var;\nSET @COLUMNS_USED = columns_used_var;\nSET @MULTIDB_QUERY = CONCAT('SELECT \"$MULTIDB\" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT);\n\n-- EXECUTION --\nCREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS\nSELECT * FROM (\n SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME\n FROM INFORMATION_SCHEMA.COLUMNS\n WHERE\n TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND\n TABLE_NAME = @TABLE_NAME AND\n FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED)\n) tbl\nGROUP BY\n TABLE_SCHEMA,\n TABLE_NAME;\n\nSELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR \"\\nUNION ALL\\n\")\nINTO @stmt_sql\nFROM `MULTIDB_TEMP_DB_TBL_COLS`;\n\nPREPARE stmt FROM @stmt_sql;\nEXECUTE stmt;\nDEALLOCATE PREPARE stmt;\nEND$$\n\n--\n-- Functions\n--\nDELIMITER $$\nCREATE DEFINER=`root`@`localhost` FUNCTION `attrParentShiftIds` (`parent_id` TEXT, `option_id_shift` INT, `option_value_id_shift` INT) RETURNS TEXT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci DETERMINISTIC READS SQL DATA SQL SECURITY INVOKER BEGIN\n DECLARE i INT UNSIGNED DEFAULT 0;\n DECLARE pair_count INT UNSIGNED;\n DECLARE result TEXT DEFAULT '';\n\n DECLARE pair VARCHAR(255) DEFAULT '';\n DECLARE oid INT DEFAULT '';\n DECLARE vid INT DEFAULT '';\n\n SET pair_count = substrCount(parent_id, ',') + 1;\n\n WHILE i < pair_count DO\n SET result = CONCAT(result, IF(i <= 0, '', ','));\n\n SET pair = split(parent_id, ',', i + 1);\n\n SET oid = split(pair, '-', 1) + option_id_shift;\n SET vid = split(pair, '-', 2) + option_value_id_shift;\n\n SET pair = CONCAT(oid, '-', vid);\n SET result = CONCAT(result, pair);\n\n SET i = i + 1;\n END WHILE;\n\n RETURN result;\nEND$$\n\nDELIMITER $$\nCREATE DEFINER=`user`@`localhost` FUNCTION `split` (`string` TEXT, `delim` TEXT, `n` INT) RETURNS TEXT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci DETERMINISTIC SQL SECURITY INVOKER RETURN IF(\n (LENGTH(string) - LENGTH(REPLACE(string, delim, ''))) / LENGTH(delim) < n - 1,\n NULL,\n SUBSTRING_INDEX(SUBSTRING_INDEX(string, delim, n), delim, -1)\n)$$\n\nDELIMITER $$\nCREATE DEFINER=`root`@`localhost` FUNCTION `substrCount` (`s` VARCHAR(255), `ss` VARCHAR(255)) RETURNS TINYINT(3) UNSIGNED DETERMINISTIC READS SQL DATA SQL SECURITY INVOKER BEGIN\nDECLARE COUNT TINYINT(3) UNSIGNED;\nDECLARE OFFSET_I TINYINT(3) UNSIGNED;\nDECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = NULL;\n\nSET COUNT = 0;\nSET OFFSET_I = 1;\n\nREPEAT\nIF NOT ISNULL(s) AND OFFSET_I > 0 THEN\nSET OFFSET_I = LOCATE(ss, s, OFFSET_I);\nIF OFFSET_I > 0 THEN\nSET COUNT = COUNT + 1;\nSET OFFSET_I = OFFSET_I + 1;\nEND IF;\nEND IF;\nUNTIL ISNULL(s) OR OFFSET_I = 0 END REPEAT;\n\nRETURN COUNT;\nEND$$\n\nDELIMITER ;\n\n" + }, + "len": 3083, + "last": 3083, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 926, + "idx": 926, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user`@`localhost`", + "value": "user@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`multiDBqueryRun_V12`", + "value": "multiDBqueryRun_V12", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`query`", + "value": "query", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table_name_var`", + "value": "table_name_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`columns_used_var`", + "value": "columns_used_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`where_text_var`", + "value": "where_text_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`separator_value_var`", + "value": "separator_value_var", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Query: SingleDB → MultiDB (All DBs) + run it'", + "value": "Query: SingleDB → MultiDB (All DBs) + run it", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DETERMINISTIC", + "value": "DETERMINISTIC", + "keyword": "DETERMINISTIC", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFIES SQL DATA", + "value": "MODIFIES SQL DATA", + "keyword": "MODIFIES SQL DATA", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@TABLE_NAME", + "value": "TABLE_NAME", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name_var", + "value": "table_name_var", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@WHERE_TEXT", + "value": "WHERE_TEXT", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where_text_var", + "value": "where_text_var", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@COLUMNS_USED", + "value": "COLUMNS_USED", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "columns_used_var", + "value": "columns_used_var", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@MULTIDB_QUERY", + "value": "MULTIDB_QUERY", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCAT", + "value": "CONCAT", + "keyword": "CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'SELECT \"$MULTIDB\" FROM `$MULTIDB`.'", + "value": "SELECT \"$MULTIDB\" FROM `$MULTIDB`.", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@TABLE_NAME", + "value": "TABLE_NAME", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@WHERE_TEXT", + "value": "WHERE_TEXT", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- EXECUTION --", + "value": "-- EXECUTION --", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 556 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEMPORARY", + "value": "TEMPORARY", + "keyword": "TEMPORARY", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 574 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`MULTIDB_TEMP_DB_TBL_COLS`", + "value": "MULTIDB_TEMP_DB_TBL_COLS", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 616 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 623 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 634 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_NAME", + "value": "TABLE_NAME", + "keyword": "TABLE_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN_NAME", + "value": "COLUMN_NAME", + "keyword": "COLUMN_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 675 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFORMATION_SCHEMA", + "value": "INFORMATION_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 714 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT IN", + "value": "NOT IN", + "keyword": "NOT IN", + "type": { + "@type": "@11" + }, + "flags": 39, + "position": 732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql'", + "value": "mysql", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 739 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'test'", + "value": "test", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'tmp'", + "value": "tmp", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 761 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'information_schema'", + "value": "information_schema", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'sys'", + "value": "sys", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 785 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'performance_schema'", + "value": "performance_schema", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_NAME", + "value": "TABLE_NAME", + "keyword": "TABLE_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 834 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@TABLE_NAME", + "value": "TABLE_NAME", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 835 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 847 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIND_IN_SET", + "value": "FIND_IN_SET", + "keyword": "FIND_IN_SET", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 855 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN_NAME", + "value": "COLUMN_NAME", + "keyword": "COLUMN_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@COLUMNS_USED", + "value": "COLUMNS_USED", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 893 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 909 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 925 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_NAME", + "value": "TABLE_NAME", + "keyword": "TABLE_NAME", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 939 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 947 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP_CONCAT", + "value": "GROUP_CONCAT", + "keyword": "GROUP_CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 960 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 961 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@MULTIDB_QUERY", + "value": "MULTIDB_QUERY", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 969 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 983 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 984 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'$MULTIDB'", + "value": "$MULTIDB", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 985 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 995 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 996 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCAT", + "value": "CONCAT", + "keyword": "CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE_SCHEMA", + "value": "TABLE_SCHEMA", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1008 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1024 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1025 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1026 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SEPARATOR", + "value": "SEPARATOR", + "keyword": "SEPARATOR", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1027 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1036 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"\\nUNION ALL\\n\"", + "value": "\nUNION ALL\n", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 2, + "position": 1037 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1054 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@stmt_sql", + "value": "stmt_sql", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 1059 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1073 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`MULTIDB_TEMP_DB_TBL_COLS`", + "value": "MULTIDB_TEMP_DB_TBL_COLS", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 1074 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PREPARE", + "value": "PREPARE", + "keyword": "PREPARE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "stmt", + "value": "stmt", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@stmt_sql", + "value": "stmt_sql", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 1121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXECUTE", + "value": "EXECUTE", + "keyword": "EXECUTE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "stmt", + "value": "stmt", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEALLOCATE", + "value": "DEALLOCATE", + "keyword": "DEALLOCATE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PREPARE", + "value": "PREPARE", + "keyword": "PREPARE", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "stmt", + "value": "stmt", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 1174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@128" + }, + "flags": 4, + "position": 1178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Functions", + "value": "-- Functions", + "keyword": null, + "type": { + "@type": "@128" + }, + "flags": 4, + "position": 1181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@128" + }, + "flags": 4, + "position": 1194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 1207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`localhost`", + "value": "root@localhost", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 4, + "position": 1225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`attrParentShiftIds`", + "value": "attrParentShiftIds", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 1253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`parent_id`", + "value": "parent_id", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 1275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 1287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`option_id_shift`", + "value": "option_id_shift", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 1293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`option_value_id_shift`", + "value": "option_value_id_shift", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 1316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURNS", + "value": "RETURNS", + "keyword": "RETURNS", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 1353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 1358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_unicode_520_ci", + "value": "utf8mb4_unicode_520_ci", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DETERMINISTIC", + "value": "DETERMINISTIC", + "keyword": "DETERMINISTIC", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READS SQL DATA", + "value": "READS SQL DATA", + "keyword": "READS SQL DATA", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 1419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 1434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1471 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1485 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 1486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 1494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair_count", + "value": "pair_count", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 1549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1553 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 1554 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1561 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair", + "value": "pair", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 1590 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1594 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 1595 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1616 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "oid", + "value": "oid", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1620 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1621 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 1625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1632 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vid", + "value": "vid", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1654 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 1655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1665 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1670 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair_count", + "value": "pair_count", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1684 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "substrCount", + "value": "substrCount", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "parent_id", + "value": "parent_id", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1714 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 1715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1716 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 1717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHILE", + "value": "WHILE", + "keyword": "WHILE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 1723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1728 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1729 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair_count", + "value": "pair_count", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DO", + "value": "DO", + "keyword": "DO", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 1744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1761 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCAT", + "value": "CONCAT", + "keyword": "CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 1764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1770 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 1779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<=", + "value": "<=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1786 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 1787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1793 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1799 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1800 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1809 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair", + "value": "pair", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1815 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "split", + "value": "split", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "parent_id", + "value": "parent_id", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1834 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1837 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1838 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1839 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1840 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 1841 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 1843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1855 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "oid", + "value": "oid", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1859 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "split", + "value": "split", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair", + "value": "pair", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1868 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1872 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1873 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'-'", + "value": "-", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 1879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 1882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "option_id_shift", + "value": "option_id_shift", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1905 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1908 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vid", + "value": "vid", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1909 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1914 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "split", + "value": "split", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair", + "value": "pair", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1921 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1925 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1926 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'-'", + "value": "-", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 1932 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1934 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 1935 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1936 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "option_value_id_shift", + "value": "option_value_id_shift", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1937 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1958 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1959 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 1965 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair", + "value": "pair", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1969 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1973 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 1974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCAT", + "value": "CONCAT", + "keyword": "CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 1976 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "oid", + "value": "oid", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1983 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'-'", + "value": "-", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 1988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vid", + "value": "vid", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 1993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1996 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 1997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2013 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2014 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2015 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCAT", + "value": "CONCAT", + "keyword": "CONCAT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2016 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2029 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2030 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pair", + "value": "pair", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2031 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2036 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2037 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2048 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2049 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2050 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "i", + "value": "i", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 2053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2054 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2055 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2056 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2060 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2063 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHILE", + "value": "WHILE", + "keyword": "WHILE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2064 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2070 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURN", + "value": "RETURN", + "keyword": "RETURN", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2074 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2080 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2081 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2089 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 2092 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2094 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 2106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user`@`localhost`", + "value": "user@localhost", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 4, + "position": 2124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`split`", + "value": "split", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 2152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`string`", + "value": "string", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 2161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 2170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`delim`", + "value": "delim", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 2176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 2184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`n`", + "value": "n", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 2190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURNS", + "value": "RETURNS", + "keyword": "RETURNS", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TEXT", + "value": "TEXT", + "keyword": "TEXT", + "type": { + "@type": "@11" + }, + "flags": 9, + "position": 2207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_unicode_520_ci", + "value": "utf8mb4_unicode_520_ci", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DETERMINISTIC", + "value": "DETERMINISTIC", + "keyword": "DETERMINISTIC", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 2273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURN", + "value": "RETURN", + "keyword": "RETURN", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 2301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LENGTH", + "value": "LENGTH", + "keyword": "LENGTH", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "string", + "value": "string", + "keyword": "STRING", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-", + "value": "-", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 2325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LENGTH", + "value": "LENGTH", + "keyword": "LENGTH", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 2334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "string", + "value": "string", + "keyword": "STRING", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "delim", + "value": "delim", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 2357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/", + "value": "/", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 2363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LENGTH", + "value": "LENGTH", + "keyword": "LENGTH", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "delim", + "value": "delim", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "n", + "value": "n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-", + "value": "-", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 2383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBSTRING_INDEX", + "value": "SUBSTRING_INDEX", + "keyword": "SUBSTRING_INDEX", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBSTRING_INDEX", + "value": "SUBSTRING_INDEX", + "keyword": "SUBSTRING_INDEX", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "string", + "value": "string", + "keyword": "STRING", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "delim", + "value": "delim", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "n", + "value": "n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "delim", + "value": "delim", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-1", + "value": -1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 8, + "position": 2460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 2465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2478 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 2479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2489 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`localhost`", + "value": "root@localhost", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 4, + "position": 2497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`substrCount`", + "value": "substrCount", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 2525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`s`", + "value": "s", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 2540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2543 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2544 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2555 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2556 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`ss`", + "value": "ss", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 2558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2574 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2575 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURNS", + "value": "RETURNS", + "keyword": "RETURNS", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TINYINT", + "value": "TINYINT", + "keyword": "TINYINT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2585 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2594 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2595 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DETERMINISTIC", + "value": "DETERMINISTIC", + "keyword": "DETERMINISTIC", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READS SQL DATA", + "value": "READS SQL DATA", + "keyword": "READS SQL DATA", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 2619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@11" + }, + "flags": 7, + "position": 2634 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2654 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2669 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TINYINT", + "value": "TINYINT", + "keyword": "TINYINT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2675 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2684 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2694 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2695 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2696 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2712 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TINYINT", + "value": "TINYINT", + "keyword": "TINYINT", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2722 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2734 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2741 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONTINUE", + "value": "CONTINUE", + "keyword": "CONTINUE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2750 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HANDLER", + "value": "HANDLER", + "keyword": "HANDLER", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2759 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQLSTATE", + "value": "SQLSTATE", + "keyword": "SQLSTATE", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'02000'", + "value": "02000", + "keyword": null, + "type": { + "@type": "@68" + }, + "flags": 1, + "position": 2772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2780 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s", + "value": "s", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2785 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2786 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2793 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2799 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2804 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2809 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2824 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2825 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2826 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPEAT", + "value": "REPEAT", + "keyword": "REPEAT", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 2829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2835 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 2836 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2838 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2839 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ISNULL", + "value": "ISNULL", + "keyword": "ISNULL", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2849 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s", + "value": "s", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2857 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2868 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2869 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2870 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2888 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2889 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCATE", + "value": "LOCATE", + "keyword": "LOCATE", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2890 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ss", + "value": "ss", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s", + "value": "s", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2914 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 2915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2918 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2926 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2929 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 2931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2935 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2936 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2939 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2945 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2946 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2947 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 2948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 2954 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2956 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2957 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2958 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@11" + }, + "flags": 11, + "position": 2959 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2963 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 2972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2973 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 2974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 1, + "position": 2983 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2984 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 2985 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 2992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 2994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2995 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 2996 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2999 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 3000 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 3002 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNTIL", + "value": "UNTIL", + "keyword": "UNTIL", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 3004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3009 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ISNULL", + "value": "ISNULL", + "keyword": "ISNULL", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 3010 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 3016 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s", + "value": "s", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 3017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 3018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OR", + "value": "OR", + "keyword": "OR", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 3020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET_I", + "value": "OFFSET_I", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 3023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3031 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 3032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 3034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 3036 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3039 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPEAT", + "value": "REPEAT", + "keyword": "REPEAT", + "type": { + "@type": "@11" + }, + "flags": 35, + "position": 3040 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 3046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURN", + "value": "RETURN", + "keyword": "RETURN", + "type": { + "@type": "@11" + }, + "flags": 3, + "position": 3049 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3055 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@11" + }, + "flags": 33, + "position": 3056 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 3061 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3062 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 3063 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 3066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 0, + "position": 3070 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3079 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": 3080 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 3081 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@2" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "multiDBqueryRun_V12", + "column": null, + "expr": "`multiDBqueryRun_V12`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "NOT", + "equals": false, + "expr": "DETERMINISTIC", + "value": "DETERMINISTIC" + }, + "4": "MODIFIES SQL DATA", + "6": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + }, + "8": { + "name": "COMMENT", + "equals": false, + "expr": "'Query: SingleDB → MultiDB (All DBs) + run it'", + "value": "Query: SingleDB → MultiDB (All DBs) + run it" + } + } + }, + "fields": null, + "with": 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": "query", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "table_name_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "columns_used_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "where_text_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "separator_value_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@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": "@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" + }, + { + "@type": "@150" + }, + { + "@type": "@151" + }, + { + "@type": "@152" + }, + { + "@type": "@153" + }, + { + "@type": "@154" + }, + { + "@type": "@155" + }, + { + "@type": "@156" + }, + { + "@type": "@157" + }, + { + "@type": "@158" + }, + { + "@type": "@159" + }, + { + "@type": "@160" + }, + { + "@type": "@161" + }, + { + "@type": "@162" + }, + { + "@type": "@163" + }, + { + "@type": "@164" + }, + { + "@type": "@165" + }, + { + "@type": "@166" + }, + { + "@type": "@167" + }, + { + "@type": "@168" + }, + { + "@type": "@169" + }, + { + "@type": "@170" + }, + { + "@type": "@171" + }, + { + "@type": "@172" + }, + { + "@type": "@173" + }, + { + "@type": "@174" + }, + { + "@type": "@175" + }, + { + "@type": "@176" + }, + { + "@type": "@177" + }, + { + "@type": "@178" + }, + { + "@type": "@179" + }, + { + "@type": "@180" + }, + { + "@type": "@181" + }, + { + "@type": "@182" + }, + { + "@type": "@183" + }, + { + "@type": "@184" + }, + { + "@type": "@185" + }, + { + "@type": "@186" + }, + { + "@type": "@187" + }, + { + "@type": "@188" + }, + { + "@type": "@189" + }, + { + "@type": "@190" + }, + { + "@type": "@191" + }, + { + "@type": "@192" + }, + { + "@type": "@193" + }, + { + "@type": "@194" + }, + { + "@type": "@195" + }, + { + "@type": "@196" + }, + { + "@type": "@197" + }, + { + "@type": "@198" + }, + { + "@type": "@199" + }, + { + "@type": "@200" + }, + { + "@type": "@201" + }, + { + "@type": "@202" + }, + { + "@type": "@203" + }, + { + "@type": "@204" + }, + { + "@type": "@205" + }, + { + "@type": "@206" + }, + { + "@type": "@207" + }, + { + "@type": "@208" + }, + { + "@type": "@209" + }, + { + "@type": "@210" + }, + { + "@type": "@211" + }, + { + "@type": "@212" + }, + { + "@type": "@213" + }, + { + "@type": "@214" + }, + { + "@type": "@215" + }, + { + "@type": "@216" + }, + { + "@type": "@217" + }, + { + "@type": "@218" + }, + { + "@type": "@219" + }, + { + "@type": "@220" + }, + { + "@type": "@221" + }, + { + "@type": "@222" + }, + { + "@type": "@223" + }, + { + "@type": "@224" + }, + { + "@type": "@225" + }, + { + "@type": "@226" + }, + { + "@type": "@227" + }, + { + "@type": "@228" + }, + { + "@type": "@229" + }, + { + "@type": "@230" + }, + { + "@type": "@231" + }, + { + "@type": "@232" + }, + { + "@type": "@233" + }, + { + "@type": "@234" + }, + { + "@type": "@235" + }, + { + "@type": "@236" + }, + { + "@type": "@237" + }, + { + "@type": "@238" + }, + { + "@type": "@239" + }, + { + "@type": "@240" + }, + { + "@type": "@241" + }, + { + "@type": "@242" + }, + { + "@type": "@243" + }, + { + "@type": "@244" + }, + { + "@type": "@245" + }, + { + "@type": "@246" + }, + { + "@type": "@247" + }, + { + "@type": "@248" + }, + { + "@type": "@249" + }, + { + "@type": "@250" + }, + { + "@type": "@251" + }, + { + "@type": "@252" + }, + { + "@type": "@253" + }, + { + "@type": "@254" + }, + { + "@type": "@255" + }, + { + "@type": "@256" + }, + { + "@type": "@257" + }, + { + "@type": "@258" + }, + { + "@type": "@259" + }, + { + "@type": "@260" + }, + { + "@type": "@261" + }, + { + "@type": "@262" + }, + { + "@type": "@263" + }, + { + "@type": "@264" + }, + { + "@type": "@265" + }, + { + "@type": "@266" + }, + { + "@type": "@267" + }, + { + "@type": "@268" + }, + { + "@type": "@269" + }, + { + "@type": "@270" + }, + { + "@type": "@271" + }, + { + "@type": "@272" + }, + { + "@type": "@273" + }, + { + "@type": "@274" + }, + { + "@type": "@275" + }, + { + "@type": "@276" + }, + { + "@type": "@277" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "user@localhost", + "expr": "`user`@`localhost`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`user`@`localhost`" + }, + "6": "PROCEDURE" + } + }, + "first": 4, + "last": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "attrParentShiftIds", + "column": null, + "expr": "`attrParentShiftIds`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "DETERMINISTIC", + "4": "READS SQL DATA", + "6": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + } + } + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "CHARSET", + "equals": false, + "expr": "utf8mb4", + "value": "utf8mb4" + }, + "3": { + "name": "COLLATE", + "equals": false, + "expr": "utf8mb4_unicode_520_ci", + "value": "utf8mb4_unicode_520_ci" + } + } + }, + "lowercase": false + }, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "parent_id", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "option_id_shift", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "option_value_id_shift", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@type": "@336" + }, + { + "@type": "@337" + }, + { + "@type": "@338" + }, + { + "@type": "@339" + }, + { + "@type": "@340" + }, + { + "@type": "@341" + }, + { + "@type": "@342" + }, + { + "@type": "@343" + }, + { + "@type": "@344" + }, + { + "@type": "@345" + }, + { + "@type": "@346" + }, + { + "@type": "@347" + }, + { + "@type": "@348" + }, + { + "@type": "@349" + }, + { + "@type": "@350" + }, + { + "@type": "@351" + }, + { + "@type": "@352" + }, + { + "@type": "@353" + }, + { + "@type": "@354" + }, + { + "@type": "@355" + }, + { + "@type": "@356" + }, + { + "@type": "@357" + }, + { + "@type": "@358" + }, + { + "@type": "@359" + }, + { + "@type": "@360" + }, + { + "@type": "@361" + }, + { + "@type": "@362" + }, + { + "@type": "@363" + }, + { + "@type": "@364" + }, + { + "@type": "@365" + }, + { + "@type": "@366" + }, + { + "@type": "@367" + }, + { + "@type": "@368" + }, + { + "@type": "@369" + }, + { + "@type": "@370" + }, + { + "@type": "@371" + }, + { + "@type": "@372" + }, + { + "@type": "@373" + }, + { + "@type": "@374" + }, + { + "@type": "@375" + }, + { + "@type": "@376" + }, + { + "@type": "@377" + }, + { + "@type": "@378" + }, + { + "@type": "@379" + }, + { + "@type": "@380" + }, + { + "@type": "@381" + }, + { + "@type": "@382" + }, + { + "@type": "@383" + }, + { + "@type": "@384" + }, + { + "@type": "@385" + }, + { + "@type": "@386" + }, + { + "@type": "@387" + }, + { + "@type": "@388" + }, + { + "@type": "@389" + }, + { + "@type": "@390" + }, + { + "@type": "@391" + }, + { + "@type": "@392" + }, + { + "@type": "@393" + }, + { + "@type": "@394" + }, + { + "@type": "@395" + }, + { + "@type": "@396" + }, + { + "@type": "@397" + }, + { + "@type": "@398" + }, + { + "@type": "@399" + }, + { + "@type": "@400" + }, + { + "@type": "@401" + }, + { + "@type": "@402" + }, + { + "@type": "@403" + }, + { + "@type": "@404" + }, + { + "@type": "@405" + }, + { + "@type": "@406" + }, + { + "@type": "@407" + }, + { + "@type": "@408" + }, + { + "@type": "@409" + }, + { + "@type": "@410" + }, + { + "@type": "@411" + }, + { + "@type": "@412" + }, + { + "@type": "@413" + }, + { + "@type": "@414" + }, + { + "@type": "@415" + }, + { + "@type": "@416" + }, + { + "@type": "@417" + }, + { + "@type": "@418" + }, + { + "@type": "@419" + }, + { + "@type": "@420" + }, + { + "@type": "@421" + }, + { + "@type": "@422" + }, + { + "@type": "@423" + }, + { + "@type": "@424" + }, + { + "@type": "@425" + }, + { + "@type": "@426" + }, + { + "@type": "@427" + }, + { + "@type": "@428" + }, + { + "@type": "@429" + }, + { + "@type": "@430" + }, + { + "@type": "@431" + }, + { + "@type": "@432" + }, + { + "@type": "@433" + }, + { + "@type": "@434" + }, + { + "@type": "@435" + }, + { + "@type": "@436" + }, + { + "@type": "@437" + }, + { + "@type": "@438" + }, + { + "@type": "@439" + }, + { + "@type": "@440" + }, + { + "@type": "@441" + }, + { + "@type": "@442" + }, + { + "@type": "@443" + }, + { + "@type": "@444" + }, + { + "@type": "@445" + }, + { + "@type": "@446" + }, + { + "@type": "@447" + }, + { + "@type": "@448" + }, + { + "@type": "@449" + }, + { + "@type": "@450" + }, + { + "@type": "@451" + }, + { + "@type": "@452" + }, + { + "@type": "@453" + }, + { + "@type": "@454" + }, + { + "@type": "@455" + }, + { + "@type": "@456" + }, + { + "@type": "@457" + }, + { + "@type": "@458" + }, + { + "@type": "@459" + }, + { + "@type": "@460" + }, + { + "@type": "@461" + }, + { + "@type": "@462" + }, + { + "@type": "@463" + }, + { + "@type": "@464" + }, + { + "@type": "@465" + }, + { + "@type": "@466" + }, + { + "@type": "@467" + }, + { + "@type": "@468" + }, + { + "@type": "@469" + }, + { + "@type": "@470" + }, + { + "@type": "@471" + }, + { + "@type": "@472" + }, + { + "@type": "@473" + }, + { + "@type": "@474" + }, + { + "@type": "@475" + }, + { + "@type": "@476" + }, + { + "@type": "@477" + }, + { + "@type": "@478" + }, + { + "@type": "@479" + }, + { + "@type": "@480" + }, + { + "@type": "@481" + }, + { + "@type": "@482" + }, + { + "@type": "@483" + }, + { + "@type": "@484" + }, + { + "@type": "@485" + }, + { + "@type": "@486" + }, + { + "@type": "@487" + }, + { + "@type": "@488" + }, + { + "@type": "@489" + }, + { + "@type": "@490" + }, + { + "@type": "@491" + }, + { + "@type": "@492" + }, + { + "@type": "@493" + }, + { + "@type": "@494" + }, + { + "@type": "@495" + }, + { + "@type": "@496" + }, + { + "@type": "@497" + }, + { + "@type": "@498" + }, + { + "@type": "@499" + }, + { + "@type": "@500" + }, + { + "@type": "@501" + }, + { + "@type": "@502" + }, + { + "@type": "@503" + }, + { + "@type": "@504" + }, + { + "@type": "@505" + }, + { + "@type": "@506" + }, + { + "@type": "@507" + }, + { + "@type": "@508" + }, + { + "@type": "@509" + }, + { + "@type": "@510" + }, + { + "@type": "@511" + }, + { + "@type": "@512" + }, + { + "@type": "@513" + }, + { + "@type": "@514" + }, + { + "@type": "@515" + }, + { + "@type": "@516" + }, + { + "@type": "@517" + }, + { + "@type": "@518" + }, + { + "@type": "@519" + }, + { + "@type": "@520" + }, + { + "@type": "@521" + }, + { + "@type": "@522" + }, + { + "@type": "@523" + }, + { + "@type": "@524" + }, + { + "@type": "@525" + }, + { + "@type": "@526" + }, + { + "@type": "@527" + }, + { + "@type": "@528" + }, + { + "@type": "@529" + }, + { + "@type": "@530" + }, + { + "@type": "@531" + }, + { + "@type": "@532" + }, + { + "@type": "@533" + }, + { + "@type": "@534" + }, + { + "@type": "@535" + }, + { + "@type": "@536" + }, + { + "@type": "@537" + }, + { + "@type": "@538" + }, + { + "@type": "@539" + }, + { + "@type": "@540" + }, + { + "@type": "@541" + }, + { + "@type": "@542" + }, + { + "@type": "@543" + }, + { + "@type": "@544" + }, + { + "@type": "@545" + }, + { + "@type": "@546" + }, + { + "@type": "@547" + }, + { + "@type": "@548" + }, + { + "@type": "@549" + }, + { + "@type": "@550" + }, + { + "@type": "@551" + }, + { + "@type": "@552" + }, + { + "@type": "@553" + }, + { + "@type": "@554" + }, + { + "@type": "@555" + }, + { + "@type": "@556" + }, + { + "@type": "@557" + }, + { + "@type": "@558" + }, + { + "@type": "@559" + }, + { + "@type": "@560" + }, + { + "@type": "@561" + }, + { + "@type": "@562" + }, + { + "@type": "@563" + }, + { + "@type": "@564" + }, + { + "@type": "@565" + }, + { + "@type": "@566" + }, + { + "@type": "@567" + }, + { + "@type": "@568" + }, + { + "@type": "@569" + }, + { + "@type": "@570" + }, + { + "@type": "@571" + }, + { + "@type": "@572" + }, + { + "@type": "@573" + }, + { + "@type": "@574" + }, + { + "@type": "@575" + }, + { + "@type": "@576" + }, + { + "@type": "@577" + }, + { + "@type": "@578" + }, + { + "@type": "@579" + }, + { + "@type": "@580" + }, + { + "@type": "@581" + }, + { + "@type": "@582" + }, + { + "@type": "@583" + }, + { + "@type": "@584" + }, + { + "@type": "@585" + }, + { + "@type": "@586" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "root@localhost", + "expr": "`root`@`localhost`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`root`@`localhost`" + }, + "6": "FUNCTION" + } + }, + "first": 278, + "last": 575 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "split", + "column": null, + "expr": "`split`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "DETERMINISTIC", + "6": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + } + } + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "CHARSET", + "equals": false, + "expr": "utf8mb4", + "value": "utf8mb4" + }, + "3": { + "name": "COLLATE", + "equals": false, + "expr": "utf8mb4_unicode_520_ci", + "value": "utf8mb4_unicode_520_ci" + } + } + }, + "lowercase": false + }, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "string", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "delim", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TEXT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "n", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@type": "@637" + }, + { + "@type": "@638" + }, + { + "@type": "@639" + }, + { + "@type": "@640" + }, + { + "@type": "@641" + }, + { + "@type": "@642" + }, + { + "@type": "@643" + }, + { + "@type": "@644" + }, + { + "@type": "@645" + }, + { + "@type": "@646" + }, + { + "@type": "@647" + }, + { + "@type": "@648" + }, + { + "@type": "@649" + }, + { + "@type": "@650" + }, + { + "@type": "@651" + }, + { + "@type": "@652" + }, + { + "@type": "@653" + }, + { + "@type": "@654" + }, + { + "@type": "@655" + }, + { + "@type": "@656" + }, + { + "@type": "@657" + }, + { + "@type": "@658" + }, + { + "@type": "@659" + }, + { + "@type": "@660" + }, + { + "@type": "@661" + }, + { + "@type": "@662" + }, + { + "@type": "@663" + }, + { + "@type": "@664" + }, + { + "@type": "@665" + }, + { + "@type": "@666" + }, + { + "@type": "@667" + }, + { + "@type": "@668" + }, + { + "@type": "@669" + }, + { + "@type": "@670" + }, + { + "@type": "@671" + }, + { + "@type": "@672" + }, + { + "@type": "@673" + }, + { + "@type": "@674" + }, + { + "@type": "@675" + }, + { + "@type": "@676" + }, + { + "@type": "@677" + }, + { + "@type": "@678" + }, + { + "@type": "@679" + }, + { + "@type": "@680" + }, + { + "@type": "@681" + }, + { + "@type": "@682" + }, + { + "@type": "@683" + }, + { + "@type": "@684" + }, + { + "@type": "@685" + }, + { + "@type": "@686" + }, + { + "@type": "@687" + }, + { + "@type": "@688" + }, + { + "@type": "@689" + }, + { + "@type": "@690" + }, + { + "@type": "@691" + }, + { + "@type": "@692" + }, + { + "@type": "@693" + }, + { + "@type": "@694" + }, + { + "@type": "@695" + }, + { + "@type": "@696" + }, + { + "@type": "@697" + }, + { + "@type": "@698" + }, + { + "@type": "@699" + }, + { + "@type": "@700" + }, + { + "@type": "@701" + }, + { + "@type": "@702" + }, + { + "@type": "@703" + }, + { + "@type": "@704" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "user@localhost", + "expr": "`user`@`localhost`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`user`@`localhost`" + }, + "6": "FUNCTION" + } + }, + "first": 581, + "last": 693 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "substrCount", + "column": null, + "expr": "`substrCount`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "DETERMINISTIC", + "4": "READS SQL DATA", + "6": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + } + } + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TINYINT", + "parameters": [ + "3" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "s", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "ss", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + } + } + ], + "body": [ + { + "@type": "@755" + }, + { + "@type": "@756" + }, + { + "@type": "@757" + }, + { + "@type": "@758" + }, + { + "@type": "@759" + }, + { + "@type": "@760" + }, + { + "@type": "@761" + }, + { + "@type": "@762" + }, + { + "@type": "@763" + }, + { + "@type": "@764" + }, + { + "@type": "@765" + }, + { + "@type": "@766" + }, + { + "@type": "@767" + }, + { + "@type": "@768" + }, + { + "@type": "@769" + }, + { + "@type": "@770" + }, + { + "@type": "@771" + }, + { + "@type": "@772" + }, + { + "@type": "@773" + }, + { + "@type": "@774" + }, + { + "@type": "@775" + }, + { + "@type": "@776" + }, + { + "@type": "@777" + }, + { + "@type": "@778" + }, + { + "@type": "@779" + }, + { + "@type": "@780" + }, + { + "@type": "@781" + }, + { + "@type": "@782" + }, + { + "@type": "@783" + }, + { + "@type": "@784" + }, + { + "@type": "@785" + }, + { + "@type": "@786" + }, + { + "@type": "@787" + }, + { + "@type": "@788" + }, + { + "@type": "@789" + }, + { + "@type": "@790" + }, + { + "@type": "@791" + }, + { + "@type": "@792" + }, + { + "@type": "@793" + }, + { + "@type": "@794" + }, + { + "@type": "@795" + }, + { + "@type": "@796" + }, + { + "@type": "@797" + }, + { + "@type": "@798" + }, + { + "@type": "@799" + }, + { + "@type": "@800" + }, + { + "@type": "@801" + }, + { + "@type": "@802" + }, + { + "@type": "@803" + }, + { + "@type": "@804" + }, + { + "@type": "@805" + }, + { + "@type": "@806" + }, + { + "@type": "@807" + }, + { + "@type": "@808" + }, + { + "@type": "@809" + }, + { + "@type": "@810" + }, + { + "@type": "@811" + }, + { + "@type": "@812" + }, + { + "@type": "@813" + }, + { + "@type": "@814" + }, + { + "@type": "@815" + }, + { + "@type": "@816" + }, + { + "@type": "@817" + }, + { + "@type": "@818" + }, + { + "@type": "@819" + }, + { + "@type": "@820" + }, + { + "@type": "@821" + }, + { + "@type": "@822" + }, + { + "@type": "@823" + }, + { + "@type": "@824" + }, + { + "@type": "@825" + }, + { + "@type": "@826" + }, + { + "@type": "@827" + }, + { + "@type": "@828" + }, + { + "@type": "@829" + }, + { + "@type": "@830" + }, + { + "@type": "@831" + }, + { + "@type": "@832" + }, + { + "@type": "@833" + }, + { + "@type": "@834" + }, + { + "@type": "@835" + }, + { + "@type": "@836" + }, + { + "@type": "@837" + }, + { + "@type": "@838" + }, + { + "@type": "@839" + }, + { + "@type": "@840" + }, + { + "@type": "@841" + }, + { + "@type": "@842" + }, + { + "@type": "@843" + }, + { + "@type": "@844" + }, + { + "@type": "@845" + }, + { + "@type": "@846" + }, + { + "@type": "@847" + }, + { + "@type": "@848" + }, + { + "@type": "@849" + }, + { + "@type": "@850" + }, + { + "@type": "@851" + }, + { + "@type": "@852" + }, + { + "@type": "@853" + }, + { + "@type": "@854" + }, + { + "@type": "@855" + }, + { + "@type": "@856" + }, + { + "@type": "@857" + }, + { + "@type": "@858" + }, + { + "@type": "@859" + }, + { + "@type": "@860" + }, + { + "@type": "@861" + }, + { + "@type": "@862" + }, + { + "@type": "@863" + }, + { + "@type": "@864" + }, + { + "@type": "@865" + }, + { + "@type": "@866" + }, + { + "@type": "@867" + }, + { + "@type": "@868" + }, + { + "@type": "@869" + }, + { + "@type": "@870" + }, + { + "@type": "@871" + }, + { + "@type": "@872" + }, + { + "@type": "@873" + }, + { + "@type": "@874" + }, + { + "@type": "@875" + }, + { + "@type": "@876" + }, + { + "@type": "@877" + }, + { + "@type": "@878" + }, + { + "@type": "@879" + }, + { + "@type": "@880" + }, + { + "@type": "@881" + }, + { + "@type": "@882" + }, + { + "@type": "@883" + }, + { + "@type": "@884" + }, + { + "@type": "@885" + }, + { + "@type": "@886" + }, + { + "@type": "@887" + }, + { + "@type": "@888" + }, + { + "@type": "@889" + }, + { + "@type": "@890" + }, + { + "@type": "@891" + }, + { + "@type": "@892" + }, + { + "@type": "@893" + }, + { + "@type": "@894" + }, + { + "@type": "@895" + }, + { + "@type": "@896" + }, + { + "@type": "@897" + }, + { + "@type": "@898" + }, + { + "@type": "@899" + }, + { + "@type": "@900" + }, + { + "@type": "@901" + }, + { + "@type": "@902" + }, + { + "@type": "@903" + }, + { + "@type": "@904" + }, + { + "@type": "@905" + }, + { + "@type": "@906" + }, + { + "@type": "@907" + }, + { + "@type": "@908" + }, + { + "@type": "@909" + }, + { + "@type": "@910" + }, + { + "@type": "@911" + }, + { + "@type": "@912" + }, + { + "@type": "@913" + }, + { + "@type": "@914" + }, + { + "@type": "@915" + }, + { + "@type": "@916" + }, + { + "@type": "@917" + }, + { + "@type": "@918" + }, + { + "@type": "@919" + }, + { + "@type": "@920" + }, + { + "@type": "@921" + }, + { + "@type": "@922" + }, + { + "@type": "@923" + }, + { + "@type": "@924" + }, + { + "@type": "@925" + }, + { + "@type": "@926" + }, + { + "@type": "@927" + }, + { + "@type": "@928" + }, + { + "@type": "@929" + }, + { + "@type": "@930" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "root@localhost", + "expr": "`root`@`localhost`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`root`@`localhost`" + }, + "6": "FUNCTION" + } + }, + "first": 699, + "last": 919 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateSchema.in b/tests/data/parser/parseCreateSchema.in new file mode 100644 index 000000000..a163bea12 --- /dev/null +++ b/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/tests/data/parser/parseCreateSchema.out b/tests/data/parser/parseCreateSchema.out new file mode 100644 index 000000000..e6c8b1969 --- /dev/null +++ b/tests/data/parser/parseCreateSchema.out @@ -0,0 +1,234 @@ +{ + "query": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "len": 57, + "last": 57, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "DATABASE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateSchemaErr.in b/tests/data/parser/parseCreateSchemaErr.in new file mode 100644 index 000000000..d6ff04153 --- /dev/null +++ b/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/tests/data/parser/parseCreateSchemaErr.out b/tests/data/parser/parseCreateSchemaErr.out new file mode 100644 index 000000000..3df559e12 --- /dev/null +++ b/tests/data/parser/parseCreateSchemaErr.out @@ -0,0 +1,270 @@ +{ + "query": "CREATE SCHEMA IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE SCHEMA IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "len": 70, + "last": 70, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SCHEMA", + "value": "SCHEMA", + "keyword": "SCHEMA", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'InnoDB'", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 1, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "pma", + "table": null, + "column": null, + "expr": "pma", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "SCHEMA", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable.out b/tests/data/parser/parseCreateTable.out index cc2733edd..bbd9f6b48 100644 --- a/tests/data/parser/parseCreateTable.out +++ b/tests/data/parser/parseCreateTable.out @@ -1,19 +1,947 @@ -a:4:{s:5:"query";s:229:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:229:"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;";s:3:"len";i:229;s:4:"last";i:229;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:65:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"IF NOT EXISTS";s:5:"value";s:13:"IF NOT EXISTS";s:7:"keyword";s:13:"IF NOT EXISTS";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:39;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:48;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:57;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:77;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:86;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:93;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"64";s:5:"value";i:64;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:96;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:98;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:102;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:103;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`password`";s:5:"value";s:8:"password";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:108;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:119;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:126;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"256";s:5:"value";i:256;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:127;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:130;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:132;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'123456'";s:5:"value";s:6:"123456";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:140;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:148;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:149;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONSTRAINT";s:5:"value";s:10:"CONSTRAINT";s:7:"keyword";s:10:"CONSTRAINT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:154;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:164;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"pk_id";s:5:"value";s:5:"pk_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:165;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:170;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:171;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:182;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:183;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:184;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:188;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:189;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:190;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UNIQUE";s:5:"value";s:6:"UNIQUE";s:7:"keyword";s:6:"UNIQUE";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:195;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:201;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:202;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:203;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:211;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:212;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:213;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:214;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:215;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:221;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:222;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:228;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:65;s:3:"idx";i:65;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}s:6:"fields";a:5:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:2:"id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:3;s:14:"AUTO_INCREMENT";}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:8:"username";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:2:"64";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:4:"NULL";}}}i:2;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:8:"password";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:3:"256";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"123456";s:4:"expr";s:8:"'123456'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:8:"'123456'";}}}}i:3;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:5:"pk_id";s:12:"isConstraint";b:1;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:2:"id";}}s:4:"type";s:11:"PRIMARY KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}i:4;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:8:"username";}}s:4:"type";s:6:"UNIQUE";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:6;s:5:"TABLE";i:7;s:13:"IF NOT EXISTS";}}s:5:"first";i:0;s:4:"last";i:63;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 65, + "idx": 65, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "64", + "value": 64, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`password`", + "value": "password", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "256", + "value": 256, + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123456'", + "value": "123456", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pk_id", + "value": "pk_id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE", + "value": "UNIQUE", + "keyword": "UNIQUE", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@73" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "username", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "64" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "password", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "256" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "123456", + "expr": "'123456'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'123456'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "pk_id", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "username" + } + ], + "type": "UNIQUE", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 63 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable10.in b/tests/data/parser/parseCreateTable10.in new file mode 100644 index 000000000..354363c2d --- /dev/null +++ b/tests/data/parser/parseCreateTable10.in @@ -0,0 +1,6 @@ +CREATE TABLE `trips2` ( + `id` bigint(20) UNSIGNED NOT NULL PRIMARY KEY COMMENT 'Unique trip Id', + `trip_code` int(11) UNSIGNED NOT NULL COMMENT 'Trip code', + `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category', + `trip_date` date NOT NULL COMMENT 'The trip date' +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips'; \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable10.out b/tests/data/parser/parseCreateTable10.out new file mode 100644 index 000000000..07506f7ed --- /dev/null +++ b/tests/data/parser/parseCreateTable10.out @@ -0,0 +1,1289 @@ +{ + "query": "CREATE TABLE `trips2` (\n `id` bigint(20) UNSIGNED NOT NULL PRIMARY KEY COMMENT 'Unique trip Id',\n `trip_code` int(11) UNSIGNED NOT NULL COMMENT 'Trip code',\n `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category',\n `trip_date` date NOT NULL COMMENT 'The trip date'\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `trips2` (\n `id` bigint(20) UNSIGNED NOT NULL PRIMARY KEY COMMENT 'Unique trip Id',\n `trip_code` int(11) UNSIGNED NOT NULL COMMENT 'Trip code',\n `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category',\n `trip_date` date NOT NULL COMMENT 'The trip date'\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips';", + "len": 383, + "last": 383, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 95, + "idx": 95, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trips2`", + "value": "trips2", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Unique trip Id'", + "value": "Unique trip Id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_code`", + "value": "trip_code", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Trip code'", + "value": "Trip code", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_category`", + "value": "trip_category", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Trip category'", + "value": "Trip category", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_date`", + "value": "trip_date", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "date", + "value": "date", + "keyword": "DATE", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'The trip date'", + "value": "The trip date", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@83" + }, + "flags": 0, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_unicode_ci", + "value": "utf8mb4_unicode_ci", + "keyword": null, + "type": { + "@type": "@83" + }, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'The trips'", + "value": "The trips", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@103" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "trips2", + "column": null, + "expr": "`trips2`", + "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" + }, + "6": { + "name": "COLLATE", + "equals": true, + "expr": "utf8mb4_unicode_ci", + "value": "utf8mb4_unicode_ci" + }, + "7": { + "name": "COMMENT", + "equals": true, + "expr": "'The trips'", + "value": "The trips" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "BIGINT", + "parameters": [ + "20" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "4": "PRIMARY KEY", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Unique trip Id'", + "value": "Unique trip Id" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_code", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Trip code'", + "value": "Trip code" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_category", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Trip category'", + "value": "Trip category" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_date", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DATE", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'The trip date'", + "value": "The trip date" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 93 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable11.in b/tests/data/parser/parseCreateTable11.in new file mode 100644 index 000000000..92c6236c0 --- /dev/null +++ b/tests/data/parser/parseCreateTable11.in @@ -0,0 +1,440 @@ +CREATE TABLE `trips` ( + `id` bigint(20) UNSIGNED NOT NULL COMMENT 'Unique trip Id', + `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category', + `trip_month` int(11) UNSIGNED NOT NULL COMMENT 'Trip month', + `trip_date` date NOT NULL COMMENT 'The trip date' +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips' +PARTITION BY RANGE(trip_month) SUBPARTITION BY HASH(DAY(trip_date)) ( + PARTITION p_month_Jan + VALUES + LESS THAN (0) ( + SUBPARTITION p_month_Jan_day_0, + SUBPARTITION p_month_Jan_day_1, + SUBPARTITION p_month_Jan_day_2, + SUBPARTITION p_month_Jan_day_3, + SUBPARTITION p_month_Jan_day_4, + SUBPARTITION p_month_Jan_day_5, + SUBPARTITION p_month_Jan_day_6, + SUBPARTITION p_month_Jan_day_7, + SUBPARTITION p_month_Jan_day_8, + SUBPARTITION p_month_Jan_day_9, + SUBPARTITION p_month_Jan_day_10, + SUBPARTITION p_month_Jan_day_11, + SUBPARTITION p_month_Jan_day_12, + SUBPARTITION p_month_Jan_day_13, + SUBPARTITION p_month_Jan_day_14, + SUBPARTITION p_month_Jan_day_15, + SUBPARTITION p_month_Jan_day_16, + SUBPARTITION p_month_Jan_day_17, + SUBPARTITION p_month_Jan_day_18, + SUBPARTITION p_month_Jan_day_19, + SUBPARTITION p_month_Jan_day_20, + SUBPARTITION p_month_Jan_day_21, + SUBPARTITION p_month_Jan_day_22, + SUBPARTITION p_month_Jan_day_23, + SUBPARTITION p_month_Jan_day_24, + SUBPARTITION p_month_Jan_day_25, + SUBPARTITION p_month_Jan_day_26, + SUBPARTITION p_month_Jan_day_27, + SUBPARTITION p_month_Jan_day_28, + SUBPARTITION p_month_Jan_day_29, + SUBPARTITION p_month_Jan_day_30, + SUBPARTITION p_month_Jan_day_31 + ), + PARTITION p_month_Feb + VALUES + LESS THAN (1) ( + SUBPARTITION p_month_Feb_day_0, + SUBPARTITION p_month_Feb_day_1, + SUBPARTITION p_month_Feb_day_2, + SUBPARTITION p_month_Feb_day_3, + SUBPARTITION p_month_Feb_day_4, + SUBPARTITION p_month_Feb_day_5, + SUBPARTITION p_month_Feb_day_6, + SUBPARTITION p_month_Feb_day_7, + SUBPARTITION p_month_Feb_day_8, + SUBPARTITION p_month_Feb_day_9, + SUBPARTITION p_month_Feb_day_10, + SUBPARTITION p_month_Feb_day_11, + SUBPARTITION p_month_Feb_day_12, + SUBPARTITION p_month_Feb_day_13, + SUBPARTITION p_month_Feb_day_14, + SUBPARTITION p_month_Feb_day_15, + SUBPARTITION p_month_Feb_day_16, + SUBPARTITION p_month_Feb_day_17, + SUBPARTITION p_month_Feb_day_18, + SUBPARTITION p_month_Feb_day_19, + SUBPARTITION p_month_Feb_day_20, + SUBPARTITION p_month_Feb_day_21, + SUBPARTITION p_month_Feb_day_22, + SUBPARTITION p_month_Feb_day_23, + SUBPARTITION p_month_Feb_day_24, + SUBPARTITION p_month_Feb_day_25, + SUBPARTITION p_month_Feb_day_26, + SUBPARTITION p_month_Feb_day_27, + SUBPARTITION p_month_Feb_day_28, + SUBPARTITION p_month_Feb_day_29, + SUBPARTITION p_month_Feb_day_30, + SUBPARTITION p_month_Feb_day_31 + ), + PARTITION p_month_Mar + VALUES + LESS THAN (2) ( + SUBPARTITION p_month_Mar_day_0, + SUBPARTITION p_month_Mar_day_1, + SUBPARTITION p_month_Mar_day_2, + SUBPARTITION p_month_Mar_day_3, + SUBPARTITION p_month_Mar_day_4, + SUBPARTITION p_month_Mar_day_5, + SUBPARTITION p_month_Mar_day_6, + SUBPARTITION p_month_Mar_day_7, + SUBPARTITION p_month_Mar_day_8, + SUBPARTITION p_month_Mar_day_9, + SUBPARTITION p_month_Mar_day_10, + SUBPARTITION p_month_Mar_day_11, + SUBPARTITION p_month_Mar_day_12, + SUBPARTITION p_month_Mar_day_13, + SUBPARTITION p_month_Mar_day_14, + SUBPARTITION p_month_Mar_day_15, + SUBPARTITION p_month_Mar_day_16, + SUBPARTITION p_month_Mar_day_17, + SUBPARTITION p_month_Mar_day_18, + SUBPARTITION p_month_Mar_day_19, + SUBPARTITION p_month_Mar_day_20, + SUBPARTITION p_month_Mar_day_21, + SUBPARTITION p_month_Mar_day_22, + SUBPARTITION p_month_Mar_day_23, + SUBPARTITION p_month_Mar_day_24, + SUBPARTITION p_month_Mar_day_25, + SUBPARTITION p_month_Mar_day_26, + SUBPARTITION p_month_Mar_day_27, + SUBPARTITION p_month_Mar_day_28, + SUBPARTITION p_month_Mar_day_29, + SUBPARTITION p_month_Mar_day_30, + SUBPARTITION p_month_Mar_day_31 + ), + PARTITION p_month_Apr + VALUES + LESS THAN (3) ( + SUBPARTITION p_month_Apr_day_0, + SUBPARTITION p_month_Apr_day_1, + SUBPARTITION p_month_Apr_day_2, + SUBPARTITION p_month_Apr_day_3, + SUBPARTITION p_month_Apr_day_4, + SUBPARTITION p_month_Apr_day_5, + SUBPARTITION p_month_Apr_day_6, + SUBPARTITION p_month_Apr_day_7, + SUBPARTITION p_month_Apr_day_8, + SUBPARTITION p_month_Apr_day_9, + SUBPARTITION p_month_Apr_day_10, + SUBPARTITION p_month_Apr_day_11, + SUBPARTITION p_month_Apr_day_12, + SUBPARTITION p_month_Apr_day_13, + SUBPARTITION p_month_Apr_day_14, + SUBPARTITION p_month_Apr_day_15, + SUBPARTITION p_month_Apr_day_16, + SUBPARTITION p_month_Apr_day_17, + SUBPARTITION p_month_Apr_day_18, + SUBPARTITION p_month_Apr_day_19, + SUBPARTITION p_month_Apr_day_20, + SUBPARTITION p_month_Apr_day_21, + SUBPARTITION p_month_Apr_day_22, + SUBPARTITION p_month_Apr_day_23, + SUBPARTITION p_month_Apr_day_24, + SUBPARTITION p_month_Apr_day_25, + SUBPARTITION p_month_Apr_day_26, + SUBPARTITION p_month_Apr_day_27, + SUBPARTITION p_month_Apr_day_28, + SUBPARTITION p_month_Apr_day_29, + SUBPARTITION p_month_Apr_day_30, + SUBPARTITION p_month_Apr_day_31 + ), + PARTITION p_month_Mai + VALUES + LESS THAN (4) ( + SUBPARTITION p_month_Mai_day_0, + SUBPARTITION p_month_Mai_day_1, + SUBPARTITION p_month_Mai_day_2, + SUBPARTITION p_month_Mai_day_3, + SUBPARTITION p_month_Mai_day_4, + SUBPARTITION p_month_Mai_day_5, + SUBPARTITION p_month_Mai_day_6, + SUBPARTITION p_month_Mai_day_7, + SUBPARTITION p_month_Mai_day_8, + SUBPARTITION p_month_Mai_day_9, + SUBPARTITION p_month_Mai_day_10, + SUBPARTITION p_month_Mai_day_11, + SUBPARTITION p_month_Mai_day_12, + SUBPARTITION p_month_Mai_day_13, + SUBPARTITION p_month_Mai_day_14, + SUBPARTITION p_month_Mai_day_15, + SUBPARTITION p_month_Mai_day_16, + SUBPARTITION p_month_Mai_day_17, + SUBPARTITION p_month_Mai_day_18, + SUBPARTITION p_month_Mai_day_19, + SUBPARTITION p_month_Mai_day_20, + SUBPARTITION p_month_Mai_day_21, + SUBPARTITION p_month_Mai_day_22, + SUBPARTITION p_month_Mai_day_23, + SUBPARTITION p_month_Mai_day_24, + SUBPARTITION p_month_Mai_day_25, + SUBPARTITION p_month_Mai_day_26, + SUBPARTITION p_month_Mai_day_27, + SUBPARTITION p_month_Mai_day_28, + SUBPARTITION p_month_Mai_day_29, + SUBPARTITION p_month_Mai_day_30, + SUBPARTITION p_month_Mai_day_31 + ), + PARTITION p_month_Jun + VALUES + LESS THAN (5) ( + SUBPARTITION p_month_Jun_day_0, + SUBPARTITION p_month_Jun_day_1, + SUBPARTITION p_month_Jun_day_2, + SUBPARTITION p_month_Jun_day_3, + SUBPARTITION p_month_Jun_day_4, + SUBPARTITION p_month_Jun_day_5, + SUBPARTITION p_month_Jun_day_6, + SUBPARTITION p_month_Jun_day_7, + SUBPARTITION p_month_Jun_day_8, + SUBPARTITION p_month_Jun_day_9, + SUBPARTITION p_month_Jun_day_10, + SUBPARTITION p_month_Jun_day_11, + SUBPARTITION p_month_Jun_day_12, + SUBPARTITION p_month_Jun_day_13, + SUBPARTITION p_month_Jun_day_14, + SUBPARTITION p_month_Jun_day_15, + SUBPARTITION p_month_Jun_day_16, + SUBPARTITION p_month_Jun_day_17, + SUBPARTITION p_month_Jun_day_18, + SUBPARTITION p_month_Jun_day_19, + SUBPARTITION p_month_Jun_day_20, + SUBPARTITION p_month_Jun_day_21, + SUBPARTITION p_month_Jun_day_22, + SUBPARTITION p_month_Jun_day_23, + SUBPARTITION p_month_Jun_day_24, + SUBPARTITION p_month_Jun_day_25, + SUBPARTITION p_month_Jun_day_26, + SUBPARTITION p_month_Jun_day_27, + SUBPARTITION p_month_Jun_day_28, + SUBPARTITION p_month_Jun_day_29, + SUBPARTITION p_month_Jun_day_30, + SUBPARTITION p_month_Jun_day_31 + ), + PARTITION p_month_Jul + VALUES + LESS THAN (6) ( + SUBPARTITION p_month_Jul_day_0, + SUBPARTITION p_month_Jul_day_1, + SUBPARTITION p_month_Jul_day_2, + SUBPARTITION p_month_Jul_day_3, + SUBPARTITION p_month_Jul_day_4, + SUBPARTITION p_month_Jul_day_5, + SUBPARTITION p_month_Jul_day_6, + SUBPARTITION p_month_Jul_day_7, + SUBPARTITION p_month_Jul_day_8, + SUBPARTITION p_month_Jul_day_9, + SUBPARTITION p_month_Jul_day_10, + SUBPARTITION p_month_Jul_day_11, + SUBPARTITION p_month_Jul_day_12, + SUBPARTITION p_month_Jul_day_13, + SUBPARTITION p_month_Jul_day_14, + SUBPARTITION p_month_Jul_day_15, + SUBPARTITION p_month_Jul_day_16, + SUBPARTITION p_month_Jul_day_17, + SUBPARTITION p_month_Jul_day_18, + SUBPARTITION p_month_Jul_day_19, + SUBPARTITION p_month_Jul_day_20, + SUBPARTITION p_month_Jul_day_21, + SUBPARTITION p_month_Jul_day_22, + SUBPARTITION p_month_Jul_day_23, + SUBPARTITION p_month_Jul_day_24, + SUBPARTITION p_month_Jul_day_25, + SUBPARTITION p_month_Jul_day_26, + SUBPARTITION p_month_Jul_day_27, + SUBPARTITION p_month_Jul_day_28, + SUBPARTITION p_month_Jul_day_29, + SUBPARTITION p_month_Jul_day_30, + SUBPARTITION p_month_Jul_day_31 + ), + PARTITION p_month_Aug + VALUES + LESS THAN (7) ( + SUBPARTITION p_month_Aug_day_0, + SUBPARTITION p_month_Aug_day_1, + SUBPARTITION p_month_Aug_day_2, + SUBPARTITION p_month_Aug_day_3, + SUBPARTITION p_month_Aug_day_4, + SUBPARTITION p_month_Aug_day_5, + SUBPARTITION p_month_Aug_day_6, + SUBPARTITION p_month_Aug_day_7, + SUBPARTITION p_month_Aug_day_8, + SUBPARTITION p_month_Aug_day_9, + SUBPARTITION p_month_Aug_day_10, + SUBPARTITION p_month_Aug_day_11, + SUBPARTITION p_month_Aug_day_12, + SUBPARTITION p_month_Aug_day_13, + SUBPARTITION p_month_Aug_day_14, + SUBPARTITION p_month_Aug_day_15, + SUBPARTITION p_month_Aug_day_16, + SUBPARTITION p_month_Aug_day_17, + SUBPARTITION p_month_Aug_day_18, + SUBPARTITION p_month_Aug_day_19, + SUBPARTITION p_month_Aug_day_20, + SUBPARTITION p_month_Aug_day_21, + SUBPARTITION p_month_Aug_day_22, + SUBPARTITION p_month_Aug_day_23, + SUBPARTITION p_month_Aug_day_24, + SUBPARTITION p_month_Aug_day_25, + SUBPARTITION p_month_Aug_day_26, + SUBPARTITION p_month_Aug_day_27, + SUBPARTITION p_month_Aug_day_28, + SUBPARTITION p_month_Aug_day_29, + SUBPARTITION p_month_Aug_day_30, + SUBPARTITION p_month_Aug_day_31 + ), + PARTITION p_month_Sep + VALUES + LESS THAN (8) ( + SUBPARTITION p_month_Sep_day_0, + SUBPARTITION p_month_Sep_day_1, + SUBPARTITION p_month_Sep_day_2, + SUBPARTITION p_month_Sep_day_3, + SUBPARTITION p_month_Sep_day_4, + SUBPARTITION p_month_Sep_day_5, + SUBPARTITION p_month_Sep_day_6, + SUBPARTITION p_month_Sep_day_7, + SUBPARTITION p_month_Sep_day_8, + SUBPARTITION p_month_Sep_day_9, + SUBPARTITION p_month_Sep_day_10, + SUBPARTITION p_month_Sep_day_11, + SUBPARTITION p_month_Sep_day_12, + SUBPARTITION p_month_Sep_day_13, + SUBPARTITION p_month_Sep_day_14, + SUBPARTITION p_month_Sep_day_15, + SUBPARTITION p_month_Sep_day_16, + SUBPARTITION p_month_Sep_day_17, + SUBPARTITION p_month_Sep_day_18, + SUBPARTITION p_month_Sep_day_19, + SUBPARTITION p_month_Sep_day_20, + SUBPARTITION p_month_Sep_day_21, + SUBPARTITION p_month_Sep_day_22, + SUBPARTITION p_month_Sep_day_23, + SUBPARTITION p_month_Sep_day_24, + SUBPARTITION p_month_Sep_day_25, + SUBPARTITION p_month_Sep_day_26, + SUBPARTITION p_month_Sep_day_27, + SUBPARTITION p_month_Sep_day_28, + SUBPARTITION p_month_Sep_day_29, + SUBPARTITION p_month_Sep_day_30, + SUBPARTITION p_month_Sep_day_31 + ), + PARTITION p_month_Oct + VALUES + LESS THAN (9) ( + SUBPARTITION p_month_Oct_day_0, + SUBPARTITION p_month_Oct_day_1, + SUBPARTITION p_month_Oct_day_2, + SUBPARTITION p_month_Oct_day_3, + SUBPARTITION p_month_Oct_day_4, + SUBPARTITION p_month_Oct_day_5, + SUBPARTITION p_month_Oct_day_6, + SUBPARTITION p_month_Oct_day_7, + SUBPARTITION p_month_Oct_day_8, + SUBPARTITION p_month_Oct_day_9, + SUBPARTITION p_month_Oct_day_10, + SUBPARTITION p_month_Oct_day_11, + SUBPARTITION p_month_Oct_day_12, + SUBPARTITION p_month_Oct_day_13, + SUBPARTITION p_month_Oct_day_14, + SUBPARTITION p_month_Oct_day_15, + SUBPARTITION p_month_Oct_day_16, + SUBPARTITION p_month_Oct_day_17, + SUBPARTITION p_month_Oct_day_18, + SUBPARTITION p_month_Oct_day_19, + SUBPARTITION p_month_Oct_day_20, + SUBPARTITION p_month_Oct_day_21, + SUBPARTITION p_month_Oct_day_22, + SUBPARTITION p_month_Oct_day_23, + SUBPARTITION p_month_Oct_day_24, + SUBPARTITION p_month_Oct_day_25, + SUBPARTITION p_month_Oct_day_26, + SUBPARTITION p_month_Oct_day_27, + SUBPARTITION p_month_Oct_day_28, + SUBPARTITION p_month_Oct_day_29, + SUBPARTITION p_month_Oct_day_30, + SUBPARTITION p_month_Oct_day_31 + ), + PARTITION p_month_Nov + VALUES + LESS THAN (10) ( + SUBPARTITION p_month_Nov_day_0, + SUBPARTITION p_month_Nov_day_1, + SUBPARTITION p_month_Nov_day_2, + SUBPARTITION p_month_Nov_day_3, + SUBPARTITION p_month_Nov_day_4, + SUBPARTITION p_month_Nov_day_5, + SUBPARTITION p_month_Nov_day_6, + SUBPARTITION p_month_Nov_day_7, + SUBPARTITION p_month_Nov_day_8, + SUBPARTITION p_month_Nov_day_9, + SUBPARTITION p_month_Nov_day_10, + SUBPARTITION p_month_Nov_day_11, + SUBPARTITION p_month_Nov_day_12, + SUBPARTITION p_month_Nov_day_13, + SUBPARTITION p_month_Nov_day_14, + SUBPARTITION p_month_Nov_day_15, + SUBPARTITION p_month_Nov_day_16, + SUBPARTITION p_month_Nov_day_17, + SUBPARTITION p_month_Nov_day_18, + SUBPARTITION p_month_Nov_day_19, + SUBPARTITION p_month_Nov_day_20, + SUBPARTITION p_month_Nov_day_21, + SUBPARTITION p_month_Nov_day_22, + SUBPARTITION p_month_Nov_day_23, + SUBPARTITION p_month_Nov_day_24, + SUBPARTITION p_month_Nov_day_25, + SUBPARTITION p_month_Nov_day_26, + SUBPARTITION p_month_Nov_day_27, + SUBPARTITION p_month_Nov_day_28, + SUBPARTITION p_month_Nov_day_29, + SUBPARTITION p_month_Nov_day_30, + SUBPARTITION p_month_Nov_day_31 + ), + PARTITION p_month_Dec + VALUES + LESS THAN (11) ( + SUBPARTITION p_month_Dec_day_0, + SUBPARTITION p_month_Dec_day_1, + SUBPARTITION p_month_Dec_day_2, + SUBPARTITION p_month_Dec_day_3, + SUBPARTITION p_month_Dec_day_4, + SUBPARTITION p_month_Dec_day_5, + SUBPARTITION p_month_Dec_day_6, + SUBPARTITION p_month_Dec_day_7, + SUBPARTITION p_month_Dec_day_8, + SUBPARTITION p_month_Dec_day_9, + SUBPARTITION p_month_Dec_day_10, + SUBPARTITION p_month_Dec_day_11, + SUBPARTITION p_month_Dec_day_12, + SUBPARTITION p_month_Dec_day_13, + SUBPARTITION p_month_Dec_day_14, + SUBPARTITION p_month_Dec_day_15, + SUBPARTITION p_month_Dec_day_16, + SUBPARTITION p_month_Dec_day_17, + SUBPARTITION p_month_Dec_day_18, + SUBPARTITION p_month_Dec_day_19, + SUBPARTITION p_month_Dec_day_20, + SUBPARTITION p_month_Dec_day_21, + SUBPARTITION p_month_Dec_day_22, + SUBPARTITION p_month_Dec_day_23, + SUBPARTITION p_month_Dec_day_24, + SUBPARTITION p_month_Dec_day_25, + SUBPARTITION p_month_Dec_day_26, + SUBPARTITION p_month_Dec_day_27, + SUBPARTITION p_month_Dec_day_28, + SUBPARTITION p_month_Dec_day_29, + SUBPARTITION p_month_Dec_day_30, + SUBPARTITION p_month_Dec_day_31 + ) +) \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable11.out b/tests/data/parser/parseCreateTable11.out new file mode 100644 index 000000000..dc7705e70 --- /dev/null +++ b/tests/data/parser/parseCreateTable11.out @@ -0,0 +1,44628 @@ +{ + "query": "CREATE TABLE `trips` (\n `id` bigint(20) UNSIGNED NOT NULL COMMENT 'Unique trip Id',\n `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category',\n `trip_month` int(11) UNSIGNED NOT NULL COMMENT 'Trip month',\n `trip_date` date NOT NULL COMMENT 'The trip date'\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips'\nPARTITION BY RANGE(trip_month) SUBPARTITION BY HASH(DAY(trip_date)) (\n PARTITION p_month_Jan\n VALUES\n LESS THAN (0) (\n SUBPARTITION p_month_Jan_day_0,\n SUBPARTITION p_month_Jan_day_1,\n SUBPARTITION p_month_Jan_day_2,\n SUBPARTITION p_month_Jan_day_3,\n SUBPARTITION p_month_Jan_day_4,\n SUBPARTITION p_month_Jan_day_5,\n SUBPARTITION p_month_Jan_day_6,\n SUBPARTITION p_month_Jan_day_7,\n SUBPARTITION p_month_Jan_day_8,\n SUBPARTITION p_month_Jan_day_9,\n SUBPARTITION p_month_Jan_day_10,\n SUBPARTITION p_month_Jan_day_11,\n SUBPARTITION p_month_Jan_day_12,\n SUBPARTITION p_month_Jan_day_13,\n SUBPARTITION p_month_Jan_day_14,\n SUBPARTITION p_month_Jan_day_15,\n SUBPARTITION p_month_Jan_day_16,\n SUBPARTITION p_month_Jan_day_17,\n SUBPARTITION p_month_Jan_day_18,\n SUBPARTITION p_month_Jan_day_19,\n SUBPARTITION p_month_Jan_day_20,\n SUBPARTITION p_month_Jan_day_21,\n SUBPARTITION p_month_Jan_day_22,\n SUBPARTITION p_month_Jan_day_23,\n SUBPARTITION p_month_Jan_day_24,\n SUBPARTITION p_month_Jan_day_25,\n SUBPARTITION p_month_Jan_day_26,\n SUBPARTITION p_month_Jan_day_27,\n SUBPARTITION p_month_Jan_day_28,\n SUBPARTITION p_month_Jan_day_29,\n SUBPARTITION p_month_Jan_day_30,\n SUBPARTITION p_month_Jan_day_31\n ),\n PARTITION p_month_Feb\n VALUES\n LESS THAN (1) (\n SUBPARTITION p_month_Feb_day_0,\n SUBPARTITION p_month_Feb_day_1,\n SUBPARTITION p_month_Feb_day_2,\n SUBPARTITION p_month_Feb_day_3,\n SUBPARTITION p_month_Feb_day_4,\n SUBPARTITION p_month_Feb_day_5,\n SUBPARTITION p_month_Feb_day_6,\n SUBPARTITION p_month_Feb_day_7,\n SUBPARTITION p_month_Feb_day_8,\n SUBPARTITION p_month_Feb_day_9,\n SUBPARTITION p_month_Feb_day_10,\n SUBPARTITION p_month_Feb_day_11,\n SUBPARTITION p_month_Feb_day_12,\n SUBPARTITION p_month_Feb_day_13,\n SUBPARTITION p_month_Feb_day_14,\n SUBPARTITION p_month_Feb_day_15,\n SUBPARTITION p_month_Feb_day_16,\n SUBPARTITION p_month_Feb_day_17,\n SUBPARTITION p_month_Feb_day_18,\n SUBPARTITION p_month_Feb_day_19,\n SUBPARTITION p_month_Feb_day_20,\n SUBPARTITION p_month_Feb_day_21,\n SUBPARTITION p_month_Feb_day_22,\n SUBPARTITION p_month_Feb_day_23,\n SUBPARTITION p_month_Feb_day_24,\n SUBPARTITION p_month_Feb_day_25,\n SUBPARTITION p_month_Feb_day_26,\n SUBPARTITION p_month_Feb_day_27,\n SUBPARTITION p_month_Feb_day_28,\n SUBPARTITION p_month_Feb_day_29,\n SUBPARTITION p_month_Feb_day_30,\n SUBPARTITION p_month_Feb_day_31\n ),\n PARTITION p_month_Mar\n VALUES\n LESS THAN (2) (\n SUBPARTITION p_month_Mar_day_0,\n SUBPARTITION p_month_Mar_day_1,\n SUBPARTITION p_month_Mar_day_2,\n SUBPARTITION p_month_Mar_day_3,\n SUBPARTITION p_month_Mar_day_4,\n SUBPARTITION p_month_Mar_day_5,\n SUBPARTITION p_month_Mar_day_6,\n SUBPARTITION p_month_Mar_day_7,\n SUBPARTITION p_month_Mar_day_8,\n SUBPARTITION p_month_Mar_day_9,\n SUBPARTITION p_month_Mar_day_10,\n SUBPARTITION p_month_Mar_day_11,\n SUBPARTITION p_month_Mar_day_12,\n SUBPARTITION p_month_Mar_day_13,\n SUBPARTITION p_month_Mar_day_14,\n SUBPARTITION p_month_Mar_day_15,\n SUBPARTITION p_month_Mar_day_16,\n SUBPARTITION p_month_Mar_day_17,\n SUBPARTITION p_month_Mar_day_18,\n SUBPARTITION p_month_Mar_day_19,\n SUBPARTITION p_month_Mar_day_20,\n SUBPARTITION p_month_Mar_day_21,\n SUBPARTITION p_month_Mar_day_22,\n SUBPARTITION p_month_Mar_day_23,\n SUBPARTITION p_month_Mar_day_24,\n SUBPARTITION p_month_Mar_day_25,\n SUBPARTITION p_month_Mar_day_26,\n SUBPARTITION p_month_Mar_day_27,\n SUBPARTITION p_month_Mar_day_28,\n SUBPARTITION p_month_Mar_day_29,\n SUBPARTITION p_month_Mar_day_30,\n SUBPARTITION p_month_Mar_day_31\n ),\n PARTITION p_month_Apr\n VALUES\n LESS THAN (3) (\n SUBPARTITION p_month_Apr_day_0,\n SUBPARTITION p_month_Apr_day_1,\n SUBPARTITION p_month_Apr_day_2,\n SUBPARTITION p_month_Apr_day_3,\n SUBPARTITION p_month_Apr_day_4,\n SUBPARTITION p_month_Apr_day_5,\n SUBPARTITION p_month_Apr_day_6,\n SUBPARTITION p_month_Apr_day_7,\n SUBPARTITION p_month_Apr_day_8,\n SUBPARTITION p_month_Apr_day_9,\n SUBPARTITION p_month_Apr_day_10,\n SUBPARTITION p_month_Apr_day_11,\n SUBPARTITION p_month_Apr_day_12,\n SUBPARTITION p_month_Apr_day_13,\n SUBPARTITION p_month_Apr_day_14,\n SUBPARTITION p_month_Apr_day_15,\n SUBPARTITION p_month_Apr_day_16,\n SUBPARTITION p_month_Apr_day_17,\n SUBPARTITION p_month_Apr_day_18,\n SUBPARTITION p_month_Apr_day_19,\n SUBPARTITION p_month_Apr_day_20,\n SUBPARTITION p_month_Apr_day_21,\n SUBPARTITION p_month_Apr_day_22,\n SUBPARTITION p_month_Apr_day_23,\n SUBPARTITION p_month_Apr_day_24,\n SUBPARTITION p_month_Apr_day_25,\n SUBPARTITION p_month_Apr_day_26,\n SUBPARTITION p_month_Apr_day_27,\n SUBPARTITION p_month_Apr_day_28,\n SUBPARTITION p_month_Apr_day_29,\n SUBPARTITION p_month_Apr_day_30,\n SUBPARTITION p_month_Apr_day_31\n ),\n PARTITION p_month_Mai\n VALUES\n LESS THAN (4) (\n SUBPARTITION p_month_Mai_day_0,\n SUBPARTITION p_month_Mai_day_1,\n SUBPARTITION p_month_Mai_day_2,\n SUBPARTITION p_month_Mai_day_3,\n SUBPARTITION p_month_Mai_day_4,\n SUBPARTITION p_month_Mai_day_5,\n SUBPARTITION p_month_Mai_day_6,\n SUBPARTITION p_month_Mai_day_7,\n SUBPARTITION p_month_Mai_day_8,\n SUBPARTITION p_month_Mai_day_9,\n SUBPARTITION p_month_Mai_day_10,\n SUBPARTITION p_month_Mai_day_11,\n SUBPARTITION p_month_Mai_day_12,\n SUBPARTITION p_month_Mai_day_13,\n SUBPARTITION p_month_Mai_day_14,\n SUBPARTITION p_month_Mai_day_15,\n SUBPARTITION p_month_Mai_day_16,\n SUBPARTITION p_month_Mai_day_17,\n SUBPARTITION p_month_Mai_day_18,\n SUBPARTITION p_month_Mai_day_19,\n SUBPARTITION p_month_Mai_day_20,\n SUBPARTITION p_month_Mai_day_21,\n SUBPARTITION p_month_Mai_day_22,\n SUBPARTITION p_month_Mai_day_23,\n SUBPARTITION p_month_Mai_day_24,\n SUBPARTITION p_month_Mai_day_25,\n SUBPARTITION p_month_Mai_day_26,\n SUBPARTITION p_month_Mai_day_27,\n SUBPARTITION p_month_Mai_day_28,\n SUBPARTITION p_month_Mai_day_29,\n SUBPARTITION p_month_Mai_day_30,\n SUBPARTITION p_month_Mai_day_31\n ),\n PARTITION p_month_Jun\n VALUES\n LESS THAN (5) (\n SUBPARTITION p_month_Jun_day_0,\n SUBPARTITION p_month_Jun_day_1,\n SUBPARTITION p_month_Jun_day_2,\n SUBPARTITION p_month_Jun_day_3,\n SUBPARTITION p_month_Jun_day_4,\n SUBPARTITION p_month_Jun_day_5,\n SUBPARTITION p_month_Jun_day_6,\n SUBPARTITION p_month_Jun_day_7,\n SUBPARTITION p_month_Jun_day_8,\n SUBPARTITION p_month_Jun_day_9,\n SUBPARTITION p_month_Jun_day_10,\n SUBPARTITION p_month_Jun_day_11,\n SUBPARTITION p_month_Jun_day_12,\n SUBPARTITION p_month_Jun_day_13,\n SUBPARTITION p_month_Jun_day_14,\n SUBPARTITION p_month_Jun_day_15,\n SUBPARTITION p_month_Jun_day_16,\n SUBPARTITION p_month_Jun_day_17,\n SUBPARTITION p_month_Jun_day_18,\n SUBPARTITION p_month_Jun_day_19,\n SUBPARTITION p_month_Jun_day_20,\n SUBPARTITION p_month_Jun_day_21,\n SUBPARTITION p_month_Jun_day_22,\n SUBPARTITION p_month_Jun_day_23,\n SUBPARTITION p_month_Jun_day_24,\n SUBPARTITION p_month_Jun_day_25,\n SUBPARTITION p_month_Jun_day_26,\n SUBPARTITION p_month_Jun_day_27,\n SUBPARTITION p_month_Jun_day_28,\n SUBPARTITION p_month_Jun_day_29,\n SUBPARTITION p_month_Jun_day_30,\n SUBPARTITION p_month_Jun_day_31\n ),\n PARTITION p_month_Jul\n VALUES\n LESS THAN (6) (\n SUBPARTITION p_month_Jul_day_0,\n SUBPARTITION p_month_Jul_day_1,\n SUBPARTITION p_month_Jul_day_2,\n SUBPARTITION p_month_Jul_day_3,\n SUBPARTITION p_month_Jul_day_4,\n SUBPARTITION p_month_Jul_day_5,\n SUBPARTITION p_month_Jul_day_6,\n SUBPARTITION p_month_Jul_day_7,\n SUBPARTITION p_month_Jul_day_8,\n SUBPARTITION p_month_Jul_day_9,\n SUBPARTITION p_month_Jul_day_10,\n SUBPARTITION p_month_Jul_day_11,\n SUBPARTITION p_month_Jul_day_12,\n SUBPARTITION p_month_Jul_day_13,\n SUBPARTITION p_month_Jul_day_14,\n SUBPARTITION p_month_Jul_day_15,\n SUBPARTITION p_month_Jul_day_16,\n SUBPARTITION p_month_Jul_day_17,\n SUBPARTITION p_month_Jul_day_18,\n SUBPARTITION p_month_Jul_day_19,\n SUBPARTITION p_month_Jul_day_20,\n SUBPARTITION p_month_Jul_day_21,\n SUBPARTITION p_month_Jul_day_22,\n SUBPARTITION p_month_Jul_day_23,\n SUBPARTITION p_month_Jul_day_24,\n SUBPARTITION p_month_Jul_day_25,\n SUBPARTITION p_month_Jul_day_26,\n SUBPARTITION p_month_Jul_day_27,\n SUBPARTITION p_month_Jul_day_28,\n SUBPARTITION p_month_Jul_day_29,\n SUBPARTITION p_month_Jul_day_30,\n SUBPARTITION p_month_Jul_day_31\n ),\n PARTITION p_month_Aug\n VALUES\n LESS THAN (7) (\n SUBPARTITION p_month_Aug_day_0,\n SUBPARTITION p_month_Aug_day_1,\n SUBPARTITION p_month_Aug_day_2,\n SUBPARTITION p_month_Aug_day_3,\n SUBPARTITION p_month_Aug_day_4,\n SUBPARTITION p_month_Aug_day_5,\n SUBPARTITION p_month_Aug_day_6,\n SUBPARTITION p_month_Aug_day_7,\n SUBPARTITION p_month_Aug_day_8,\n SUBPARTITION p_month_Aug_day_9,\n SUBPARTITION p_month_Aug_day_10,\n SUBPARTITION p_month_Aug_day_11,\n SUBPARTITION p_month_Aug_day_12,\n SUBPARTITION p_month_Aug_day_13,\n SUBPARTITION p_month_Aug_day_14,\n SUBPARTITION p_month_Aug_day_15,\n SUBPARTITION p_month_Aug_day_16,\n SUBPARTITION p_month_Aug_day_17,\n SUBPARTITION p_month_Aug_day_18,\n SUBPARTITION p_month_Aug_day_19,\n SUBPARTITION p_month_Aug_day_20,\n SUBPARTITION p_month_Aug_day_21,\n SUBPARTITION p_month_Aug_day_22,\n SUBPARTITION p_month_Aug_day_23,\n SUBPARTITION p_month_Aug_day_24,\n SUBPARTITION p_month_Aug_day_25,\n SUBPARTITION p_month_Aug_day_26,\n SUBPARTITION p_month_Aug_day_27,\n SUBPARTITION p_month_Aug_day_28,\n SUBPARTITION p_month_Aug_day_29,\n SUBPARTITION p_month_Aug_day_30,\n SUBPARTITION p_month_Aug_day_31\n ),\n PARTITION p_month_Sep\n VALUES\n LESS THAN (8) (\n SUBPARTITION p_month_Sep_day_0,\n SUBPARTITION p_month_Sep_day_1,\n SUBPARTITION p_month_Sep_day_2,\n SUBPARTITION p_month_Sep_day_3,\n SUBPARTITION p_month_Sep_day_4,\n SUBPARTITION p_month_Sep_day_5,\n SUBPARTITION p_month_Sep_day_6,\n SUBPARTITION p_month_Sep_day_7,\n SUBPARTITION p_month_Sep_day_8,\n SUBPARTITION p_month_Sep_day_9,\n SUBPARTITION p_month_Sep_day_10,\n SUBPARTITION p_month_Sep_day_11,\n SUBPARTITION p_month_Sep_day_12,\n SUBPARTITION p_month_Sep_day_13,\n SUBPARTITION p_month_Sep_day_14,\n SUBPARTITION p_month_Sep_day_15,\n SUBPARTITION p_month_Sep_day_16,\n SUBPARTITION p_month_Sep_day_17,\n SUBPARTITION p_month_Sep_day_18,\n SUBPARTITION p_month_Sep_day_19,\n SUBPARTITION p_month_Sep_day_20,\n SUBPARTITION p_month_Sep_day_21,\n SUBPARTITION p_month_Sep_day_22,\n SUBPARTITION p_month_Sep_day_23,\n SUBPARTITION p_month_Sep_day_24,\n SUBPARTITION p_month_Sep_day_25,\n SUBPARTITION p_month_Sep_day_26,\n SUBPARTITION p_month_Sep_day_27,\n SUBPARTITION p_month_Sep_day_28,\n SUBPARTITION p_month_Sep_day_29,\n SUBPARTITION p_month_Sep_day_30,\n SUBPARTITION p_month_Sep_day_31\n ),\n PARTITION p_month_Oct\n VALUES\n LESS THAN (9) (\n SUBPARTITION p_month_Oct_day_0,\n SUBPARTITION p_month_Oct_day_1,\n SUBPARTITION p_month_Oct_day_2,\n SUBPARTITION p_month_Oct_day_3,\n SUBPARTITION p_month_Oct_day_4,\n SUBPARTITION p_month_Oct_day_5,\n SUBPARTITION p_month_Oct_day_6,\n SUBPARTITION p_month_Oct_day_7,\n SUBPARTITION p_month_Oct_day_8,\n SUBPARTITION p_month_Oct_day_9,\n SUBPARTITION p_month_Oct_day_10,\n SUBPARTITION p_month_Oct_day_11,\n SUBPARTITION p_month_Oct_day_12,\n SUBPARTITION p_month_Oct_day_13,\n SUBPARTITION p_month_Oct_day_14,\n SUBPARTITION p_month_Oct_day_15,\n SUBPARTITION p_month_Oct_day_16,\n SUBPARTITION p_month_Oct_day_17,\n SUBPARTITION p_month_Oct_day_18,\n SUBPARTITION p_month_Oct_day_19,\n SUBPARTITION p_month_Oct_day_20,\n SUBPARTITION p_month_Oct_day_21,\n SUBPARTITION p_month_Oct_day_22,\n SUBPARTITION p_month_Oct_day_23,\n SUBPARTITION p_month_Oct_day_24,\n SUBPARTITION p_month_Oct_day_25,\n SUBPARTITION p_month_Oct_day_26,\n SUBPARTITION p_month_Oct_day_27,\n SUBPARTITION p_month_Oct_day_28,\n SUBPARTITION p_month_Oct_day_29,\n SUBPARTITION p_month_Oct_day_30,\n SUBPARTITION p_month_Oct_day_31\n ),\n PARTITION p_month_Nov\n VALUES\n LESS THAN (10) (\n SUBPARTITION p_month_Nov_day_0,\n SUBPARTITION p_month_Nov_day_1,\n SUBPARTITION p_month_Nov_day_2,\n SUBPARTITION p_month_Nov_day_3,\n SUBPARTITION p_month_Nov_day_4,\n SUBPARTITION p_month_Nov_day_5,\n SUBPARTITION p_month_Nov_day_6,\n SUBPARTITION p_month_Nov_day_7,\n SUBPARTITION p_month_Nov_day_8,\n SUBPARTITION p_month_Nov_day_9,\n SUBPARTITION p_month_Nov_day_10,\n SUBPARTITION p_month_Nov_day_11,\n SUBPARTITION p_month_Nov_day_12,\n SUBPARTITION p_month_Nov_day_13,\n SUBPARTITION p_month_Nov_day_14,\n SUBPARTITION p_month_Nov_day_15,\n SUBPARTITION p_month_Nov_day_16,\n SUBPARTITION p_month_Nov_day_17,\n SUBPARTITION p_month_Nov_day_18,\n SUBPARTITION p_month_Nov_day_19,\n SUBPARTITION p_month_Nov_day_20,\n SUBPARTITION p_month_Nov_day_21,\n SUBPARTITION p_month_Nov_day_22,\n SUBPARTITION p_month_Nov_day_23,\n SUBPARTITION p_month_Nov_day_24,\n SUBPARTITION p_month_Nov_day_25,\n SUBPARTITION p_month_Nov_day_26,\n SUBPARTITION p_month_Nov_day_27,\n SUBPARTITION p_month_Nov_day_28,\n SUBPARTITION p_month_Nov_day_29,\n SUBPARTITION p_month_Nov_day_30,\n SUBPARTITION p_month_Nov_day_31\n ),\n PARTITION p_month_Dec\n VALUES\n LESS THAN (11) (\n SUBPARTITION p_month_Dec_day_0,\n SUBPARTITION p_month_Dec_day_1,\n SUBPARTITION p_month_Dec_day_2,\n SUBPARTITION p_month_Dec_day_3,\n SUBPARTITION p_month_Dec_day_4,\n SUBPARTITION p_month_Dec_day_5,\n SUBPARTITION p_month_Dec_day_6,\n SUBPARTITION p_month_Dec_day_7,\n SUBPARTITION p_month_Dec_day_8,\n SUBPARTITION p_month_Dec_day_9,\n SUBPARTITION p_month_Dec_day_10,\n SUBPARTITION p_month_Dec_day_11,\n SUBPARTITION p_month_Dec_day_12,\n SUBPARTITION p_month_Dec_day_13,\n SUBPARTITION p_month_Dec_day_14,\n SUBPARTITION p_month_Dec_day_15,\n SUBPARTITION p_month_Dec_day_16,\n SUBPARTITION p_month_Dec_day_17,\n SUBPARTITION p_month_Dec_day_18,\n SUBPARTITION p_month_Dec_day_19,\n SUBPARTITION p_month_Dec_day_20,\n SUBPARTITION p_month_Dec_day_21,\n SUBPARTITION p_month_Dec_day_22,\n SUBPARTITION p_month_Dec_day_23,\n SUBPARTITION p_month_Dec_day_24,\n SUBPARTITION p_month_Dec_day_25,\n SUBPARTITION p_month_Dec_day_26,\n SUBPARTITION p_month_Dec_day_27,\n SUBPARTITION p_month_Dec_day_28,\n SUBPARTITION p_month_Dec_day_29,\n SUBPARTITION p_month_Dec_day_30,\n SUBPARTITION p_month_Dec_day_31\n )\n)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `trips` (\n `id` bigint(20) UNSIGNED NOT NULL COMMENT 'Unique trip Id',\n `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category',\n `trip_month` int(11) UNSIGNED NOT NULL COMMENT 'Trip month',\n `trip_date` date NOT NULL COMMENT 'The trip date'\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips'\nPARTITION BY RANGE(trip_month) SUBPARTITION BY HASH(DAY(trip_date)) (\n PARTITION p_month_Jan\n VALUES\n LESS THAN (0) (\n SUBPARTITION p_month_Jan_day_0,\n SUBPARTITION p_month_Jan_day_1,\n SUBPARTITION p_month_Jan_day_2,\n SUBPARTITION p_month_Jan_day_3,\n SUBPARTITION p_month_Jan_day_4,\n SUBPARTITION p_month_Jan_day_5,\n SUBPARTITION p_month_Jan_day_6,\n SUBPARTITION p_month_Jan_day_7,\n SUBPARTITION p_month_Jan_day_8,\n SUBPARTITION p_month_Jan_day_9,\n SUBPARTITION p_month_Jan_day_10,\n SUBPARTITION p_month_Jan_day_11,\n SUBPARTITION p_month_Jan_day_12,\n SUBPARTITION p_month_Jan_day_13,\n SUBPARTITION p_month_Jan_day_14,\n SUBPARTITION p_month_Jan_day_15,\n SUBPARTITION p_month_Jan_day_16,\n SUBPARTITION p_month_Jan_day_17,\n SUBPARTITION p_month_Jan_day_18,\n SUBPARTITION p_month_Jan_day_19,\n SUBPARTITION p_month_Jan_day_20,\n SUBPARTITION p_month_Jan_day_21,\n SUBPARTITION p_month_Jan_day_22,\n SUBPARTITION p_month_Jan_day_23,\n SUBPARTITION p_month_Jan_day_24,\n SUBPARTITION p_month_Jan_day_25,\n SUBPARTITION p_month_Jan_day_26,\n SUBPARTITION p_month_Jan_day_27,\n SUBPARTITION p_month_Jan_day_28,\n SUBPARTITION p_month_Jan_day_29,\n SUBPARTITION p_month_Jan_day_30,\n SUBPARTITION p_month_Jan_day_31\n ),\n PARTITION p_month_Feb\n VALUES\n LESS THAN (1) (\n SUBPARTITION p_month_Feb_day_0,\n SUBPARTITION p_month_Feb_day_1,\n SUBPARTITION p_month_Feb_day_2,\n SUBPARTITION p_month_Feb_day_3,\n SUBPARTITION p_month_Feb_day_4,\n SUBPARTITION p_month_Feb_day_5,\n SUBPARTITION p_month_Feb_day_6,\n SUBPARTITION p_month_Feb_day_7,\n SUBPARTITION p_month_Feb_day_8,\n SUBPARTITION p_month_Feb_day_9,\n SUBPARTITION p_month_Feb_day_10,\n SUBPARTITION p_month_Feb_day_11,\n SUBPARTITION p_month_Feb_day_12,\n SUBPARTITION p_month_Feb_day_13,\n SUBPARTITION p_month_Feb_day_14,\n SUBPARTITION p_month_Feb_day_15,\n SUBPARTITION p_month_Feb_day_16,\n SUBPARTITION p_month_Feb_day_17,\n SUBPARTITION p_month_Feb_day_18,\n SUBPARTITION p_month_Feb_day_19,\n SUBPARTITION p_month_Feb_day_20,\n SUBPARTITION p_month_Feb_day_21,\n SUBPARTITION p_month_Feb_day_22,\n SUBPARTITION p_month_Feb_day_23,\n SUBPARTITION p_month_Feb_day_24,\n SUBPARTITION p_month_Feb_day_25,\n SUBPARTITION p_month_Feb_day_26,\n SUBPARTITION p_month_Feb_day_27,\n SUBPARTITION p_month_Feb_day_28,\n SUBPARTITION p_month_Feb_day_29,\n SUBPARTITION p_month_Feb_day_30,\n SUBPARTITION p_month_Feb_day_31\n ),\n PARTITION p_month_Mar\n VALUES\n LESS THAN (2) (\n SUBPARTITION p_month_Mar_day_0,\n SUBPARTITION p_month_Mar_day_1,\n SUBPARTITION p_month_Mar_day_2,\n SUBPARTITION p_month_Mar_day_3,\n SUBPARTITION p_month_Mar_day_4,\n SUBPARTITION p_month_Mar_day_5,\n SUBPARTITION p_month_Mar_day_6,\n SUBPARTITION p_month_Mar_day_7,\n SUBPARTITION p_month_Mar_day_8,\n SUBPARTITION p_month_Mar_day_9,\n SUBPARTITION p_month_Mar_day_10,\n SUBPARTITION p_month_Mar_day_11,\n SUBPARTITION p_month_Mar_day_12,\n SUBPARTITION p_month_Mar_day_13,\n SUBPARTITION p_month_Mar_day_14,\n SUBPARTITION p_month_Mar_day_15,\n SUBPARTITION p_month_Mar_day_16,\n SUBPARTITION p_month_Mar_day_17,\n SUBPARTITION p_month_Mar_day_18,\n SUBPARTITION p_month_Mar_day_19,\n SUBPARTITION p_month_Mar_day_20,\n SUBPARTITION p_month_Mar_day_21,\n SUBPARTITION p_month_Mar_day_22,\n SUBPARTITION p_month_Mar_day_23,\n SUBPARTITION p_month_Mar_day_24,\n SUBPARTITION p_month_Mar_day_25,\n SUBPARTITION p_month_Mar_day_26,\n SUBPARTITION p_month_Mar_day_27,\n SUBPARTITION p_month_Mar_day_28,\n SUBPARTITION p_month_Mar_day_29,\n SUBPARTITION p_month_Mar_day_30,\n SUBPARTITION p_month_Mar_day_31\n ),\n PARTITION p_month_Apr\n VALUES\n LESS THAN (3) (\n SUBPARTITION p_month_Apr_day_0,\n SUBPARTITION p_month_Apr_day_1,\n SUBPARTITION p_month_Apr_day_2,\n SUBPARTITION p_month_Apr_day_3,\n SUBPARTITION p_month_Apr_day_4,\n SUBPARTITION p_month_Apr_day_5,\n SUBPARTITION p_month_Apr_day_6,\n SUBPARTITION p_month_Apr_day_7,\n SUBPARTITION p_month_Apr_day_8,\n SUBPARTITION p_month_Apr_day_9,\n SUBPARTITION p_month_Apr_day_10,\n SUBPARTITION p_month_Apr_day_11,\n SUBPARTITION p_month_Apr_day_12,\n SUBPARTITION p_month_Apr_day_13,\n SUBPARTITION p_month_Apr_day_14,\n SUBPARTITION p_month_Apr_day_15,\n SUBPARTITION p_month_Apr_day_16,\n SUBPARTITION p_month_Apr_day_17,\n SUBPARTITION p_month_Apr_day_18,\n SUBPARTITION p_month_Apr_day_19,\n SUBPARTITION p_month_Apr_day_20,\n SUBPARTITION p_month_Apr_day_21,\n SUBPARTITION p_month_Apr_day_22,\n SUBPARTITION p_month_Apr_day_23,\n SUBPARTITION p_month_Apr_day_24,\n SUBPARTITION p_month_Apr_day_25,\n SUBPARTITION p_month_Apr_day_26,\n SUBPARTITION p_month_Apr_day_27,\n SUBPARTITION p_month_Apr_day_28,\n SUBPARTITION p_month_Apr_day_29,\n SUBPARTITION p_month_Apr_day_30,\n SUBPARTITION p_month_Apr_day_31\n ),\n PARTITION p_month_Mai\n VALUES\n LESS THAN (4) (\n SUBPARTITION p_month_Mai_day_0,\n SUBPARTITION p_month_Mai_day_1,\n SUBPARTITION p_month_Mai_day_2,\n SUBPARTITION p_month_Mai_day_3,\n SUBPARTITION p_month_Mai_day_4,\n SUBPARTITION p_month_Mai_day_5,\n SUBPARTITION p_month_Mai_day_6,\n SUBPARTITION p_month_Mai_day_7,\n SUBPARTITION p_month_Mai_day_8,\n SUBPARTITION p_month_Mai_day_9,\n SUBPARTITION p_month_Mai_day_10,\n SUBPARTITION p_month_Mai_day_11,\n SUBPARTITION p_month_Mai_day_12,\n SUBPARTITION p_month_Mai_day_13,\n SUBPARTITION p_month_Mai_day_14,\n SUBPARTITION p_month_Mai_day_15,\n SUBPARTITION p_month_Mai_day_16,\n SUBPARTITION p_month_Mai_day_17,\n SUBPARTITION p_month_Mai_day_18,\n SUBPARTITION p_month_Mai_day_19,\n SUBPARTITION p_month_Mai_day_20,\n SUBPARTITION p_month_Mai_day_21,\n SUBPARTITION p_month_Mai_day_22,\n SUBPARTITION p_month_Mai_day_23,\n SUBPARTITION p_month_Mai_day_24,\n SUBPARTITION p_month_Mai_day_25,\n SUBPARTITION p_month_Mai_day_26,\n SUBPARTITION p_month_Mai_day_27,\n SUBPARTITION p_month_Mai_day_28,\n SUBPARTITION p_month_Mai_day_29,\n SUBPARTITION p_month_Mai_day_30,\n SUBPARTITION p_month_Mai_day_31\n ),\n PARTITION p_month_Jun\n VALUES\n LESS THAN (5) (\n SUBPARTITION p_month_Jun_day_0,\n SUBPARTITION p_month_Jun_day_1,\n SUBPARTITION p_month_Jun_day_2,\n SUBPARTITION p_month_Jun_day_3,\n SUBPARTITION p_month_Jun_day_4,\n SUBPARTITION p_month_Jun_day_5,\n SUBPARTITION p_month_Jun_day_6,\n SUBPARTITION p_month_Jun_day_7,\n SUBPARTITION p_month_Jun_day_8,\n SUBPARTITION p_month_Jun_day_9,\n SUBPARTITION p_month_Jun_day_10,\n SUBPARTITION p_month_Jun_day_11,\n SUBPARTITION p_month_Jun_day_12,\n SUBPARTITION p_month_Jun_day_13,\n SUBPARTITION p_month_Jun_day_14,\n SUBPARTITION p_month_Jun_day_15,\n SUBPARTITION p_month_Jun_day_16,\n SUBPARTITION p_month_Jun_day_17,\n SUBPARTITION p_month_Jun_day_18,\n SUBPARTITION p_month_Jun_day_19,\n SUBPARTITION p_month_Jun_day_20,\n SUBPARTITION p_month_Jun_day_21,\n SUBPARTITION p_month_Jun_day_22,\n SUBPARTITION p_month_Jun_day_23,\n SUBPARTITION p_month_Jun_day_24,\n SUBPARTITION p_month_Jun_day_25,\n SUBPARTITION p_month_Jun_day_26,\n SUBPARTITION p_month_Jun_day_27,\n SUBPARTITION p_month_Jun_day_28,\n SUBPARTITION p_month_Jun_day_29,\n SUBPARTITION p_month_Jun_day_30,\n SUBPARTITION p_month_Jun_day_31\n ),\n PARTITION p_month_Jul\n VALUES\n LESS THAN (6) (\n SUBPARTITION p_month_Jul_day_0,\n SUBPARTITION p_month_Jul_day_1,\n SUBPARTITION p_month_Jul_day_2,\n SUBPARTITION p_month_Jul_day_3,\n SUBPARTITION p_month_Jul_day_4,\n SUBPARTITION p_month_Jul_day_5,\n SUBPARTITION p_month_Jul_day_6,\n SUBPARTITION p_month_Jul_day_7,\n SUBPARTITION p_month_Jul_day_8,\n SUBPARTITION p_month_Jul_day_9,\n SUBPARTITION p_month_Jul_day_10,\n SUBPARTITION p_month_Jul_day_11,\n SUBPARTITION p_month_Jul_day_12,\n SUBPARTITION p_month_Jul_day_13,\n SUBPARTITION p_month_Jul_day_14,\n SUBPARTITION p_month_Jul_day_15,\n SUBPARTITION p_month_Jul_day_16,\n SUBPARTITION p_month_Jul_day_17,\n SUBPARTITION p_month_Jul_day_18,\n SUBPARTITION p_month_Jul_day_19,\n SUBPARTITION p_month_Jul_day_20,\n SUBPARTITION p_month_Jul_day_21,\n SUBPARTITION p_month_Jul_day_22,\n SUBPARTITION p_month_Jul_day_23,\n SUBPARTITION p_month_Jul_day_24,\n SUBPARTITION p_month_Jul_day_25,\n SUBPARTITION p_month_Jul_day_26,\n SUBPARTITION p_month_Jul_day_27,\n SUBPARTITION p_month_Jul_day_28,\n SUBPARTITION p_month_Jul_day_29,\n SUBPARTITION p_month_Jul_day_30,\n SUBPARTITION p_month_Jul_day_31\n ),\n PARTITION p_month_Aug\n VALUES\n LESS THAN (7) (\n SUBPARTITION p_month_Aug_day_0,\n SUBPARTITION p_month_Aug_day_1,\n SUBPARTITION p_month_Aug_day_2,\n SUBPARTITION p_month_Aug_day_3,\n SUBPARTITION p_month_Aug_day_4,\n SUBPARTITION p_month_Aug_day_5,\n SUBPARTITION p_month_Aug_day_6,\n SUBPARTITION p_month_Aug_day_7,\n SUBPARTITION p_month_Aug_day_8,\n SUBPARTITION p_month_Aug_day_9,\n SUBPARTITION p_month_Aug_day_10,\n SUBPARTITION p_month_Aug_day_11,\n SUBPARTITION p_month_Aug_day_12,\n SUBPARTITION p_month_Aug_day_13,\n SUBPARTITION p_month_Aug_day_14,\n SUBPARTITION p_month_Aug_day_15,\n SUBPARTITION p_month_Aug_day_16,\n SUBPARTITION p_month_Aug_day_17,\n SUBPARTITION p_month_Aug_day_18,\n SUBPARTITION p_month_Aug_day_19,\n SUBPARTITION p_month_Aug_day_20,\n SUBPARTITION p_month_Aug_day_21,\n SUBPARTITION p_month_Aug_day_22,\n SUBPARTITION p_month_Aug_day_23,\n SUBPARTITION p_month_Aug_day_24,\n SUBPARTITION p_month_Aug_day_25,\n SUBPARTITION p_month_Aug_day_26,\n SUBPARTITION p_month_Aug_day_27,\n SUBPARTITION p_month_Aug_day_28,\n SUBPARTITION p_month_Aug_day_29,\n SUBPARTITION p_month_Aug_day_30,\n SUBPARTITION p_month_Aug_day_31\n ),\n PARTITION p_month_Sep\n VALUES\n LESS THAN (8) (\n SUBPARTITION p_month_Sep_day_0,\n SUBPARTITION p_month_Sep_day_1,\n SUBPARTITION p_month_Sep_day_2,\n SUBPARTITION p_month_Sep_day_3,\n SUBPARTITION p_month_Sep_day_4,\n SUBPARTITION p_month_Sep_day_5,\n SUBPARTITION p_month_Sep_day_6,\n SUBPARTITION p_month_Sep_day_7,\n SUBPARTITION p_month_Sep_day_8,\n SUBPARTITION p_month_Sep_day_9,\n SUBPARTITION p_month_Sep_day_10,\n SUBPARTITION p_month_Sep_day_11,\n SUBPARTITION p_month_Sep_day_12,\n SUBPARTITION p_month_Sep_day_13,\n SUBPARTITION p_month_Sep_day_14,\n SUBPARTITION p_month_Sep_day_15,\n SUBPARTITION p_month_Sep_day_16,\n SUBPARTITION p_month_Sep_day_17,\n SUBPARTITION p_month_Sep_day_18,\n SUBPARTITION p_month_Sep_day_19,\n SUBPARTITION p_month_Sep_day_20,\n SUBPARTITION p_month_Sep_day_21,\n SUBPARTITION p_month_Sep_day_22,\n SUBPARTITION p_month_Sep_day_23,\n SUBPARTITION p_month_Sep_day_24,\n SUBPARTITION p_month_Sep_day_25,\n SUBPARTITION p_month_Sep_day_26,\n SUBPARTITION p_month_Sep_day_27,\n SUBPARTITION p_month_Sep_day_28,\n SUBPARTITION p_month_Sep_day_29,\n SUBPARTITION p_month_Sep_day_30,\n SUBPARTITION p_month_Sep_day_31\n ),\n PARTITION p_month_Oct\n VALUES\n LESS THAN (9) (\n SUBPARTITION p_month_Oct_day_0,\n SUBPARTITION p_month_Oct_day_1,\n SUBPARTITION p_month_Oct_day_2,\n SUBPARTITION p_month_Oct_day_3,\n SUBPARTITION p_month_Oct_day_4,\n SUBPARTITION p_month_Oct_day_5,\n SUBPARTITION p_month_Oct_day_6,\n SUBPARTITION p_month_Oct_day_7,\n SUBPARTITION p_month_Oct_day_8,\n SUBPARTITION p_month_Oct_day_9,\n SUBPARTITION p_month_Oct_day_10,\n SUBPARTITION p_month_Oct_day_11,\n SUBPARTITION p_month_Oct_day_12,\n SUBPARTITION p_month_Oct_day_13,\n SUBPARTITION p_month_Oct_day_14,\n SUBPARTITION p_month_Oct_day_15,\n SUBPARTITION p_month_Oct_day_16,\n SUBPARTITION p_month_Oct_day_17,\n SUBPARTITION p_month_Oct_day_18,\n SUBPARTITION p_month_Oct_day_19,\n SUBPARTITION p_month_Oct_day_20,\n SUBPARTITION p_month_Oct_day_21,\n SUBPARTITION p_month_Oct_day_22,\n SUBPARTITION p_month_Oct_day_23,\n SUBPARTITION p_month_Oct_day_24,\n SUBPARTITION p_month_Oct_day_25,\n SUBPARTITION p_month_Oct_day_26,\n SUBPARTITION p_month_Oct_day_27,\n SUBPARTITION p_month_Oct_day_28,\n SUBPARTITION p_month_Oct_day_29,\n SUBPARTITION p_month_Oct_day_30,\n SUBPARTITION p_month_Oct_day_31\n ),\n PARTITION p_month_Nov\n VALUES\n LESS THAN (10) (\n SUBPARTITION p_month_Nov_day_0,\n SUBPARTITION p_month_Nov_day_1,\n SUBPARTITION p_month_Nov_day_2,\n SUBPARTITION p_month_Nov_day_3,\n SUBPARTITION p_month_Nov_day_4,\n SUBPARTITION p_month_Nov_day_5,\n SUBPARTITION p_month_Nov_day_6,\n SUBPARTITION p_month_Nov_day_7,\n SUBPARTITION p_month_Nov_day_8,\n SUBPARTITION p_month_Nov_day_9,\n SUBPARTITION p_month_Nov_day_10,\n SUBPARTITION p_month_Nov_day_11,\n SUBPARTITION p_month_Nov_day_12,\n SUBPARTITION p_month_Nov_day_13,\n SUBPARTITION p_month_Nov_day_14,\n SUBPARTITION p_month_Nov_day_15,\n SUBPARTITION p_month_Nov_day_16,\n SUBPARTITION p_month_Nov_day_17,\n SUBPARTITION p_month_Nov_day_18,\n SUBPARTITION p_month_Nov_day_19,\n SUBPARTITION p_month_Nov_day_20,\n SUBPARTITION p_month_Nov_day_21,\n SUBPARTITION p_month_Nov_day_22,\n SUBPARTITION p_month_Nov_day_23,\n SUBPARTITION p_month_Nov_day_24,\n SUBPARTITION p_month_Nov_day_25,\n SUBPARTITION p_month_Nov_day_26,\n SUBPARTITION p_month_Nov_day_27,\n SUBPARTITION p_month_Nov_day_28,\n SUBPARTITION p_month_Nov_day_29,\n SUBPARTITION p_month_Nov_day_30,\n SUBPARTITION p_month_Nov_day_31\n ),\n PARTITION p_month_Dec\n VALUES\n LESS THAN (11) (\n SUBPARTITION p_month_Dec_day_0,\n SUBPARTITION p_month_Dec_day_1,\n SUBPARTITION p_month_Dec_day_2,\n SUBPARTITION p_month_Dec_day_3,\n SUBPARTITION p_month_Dec_day_4,\n SUBPARTITION p_month_Dec_day_5,\n SUBPARTITION p_month_Dec_day_6,\n SUBPARTITION p_month_Dec_day_7,\n SUBPARTITION p_month_Dec_day_8,\n SUBPARTITION p_month_Dec_day_9,\n SUBPARTITION p_month_Dec_day_10,\n SUBPARTITION p_month_Dec_day_11,\n SUBPARTITION p_month_Dec_day_12,\n SUBPARTITION p_month_Dec_day_13,\n SUBPARTITION p_month_Dec_day_14,\n SUBPARTITION p_month_Dec_day_15,\n SUBPARTITION p_month_Dec_day_16,\n SUBPARTITION p_month_Dec_day_17,\n SUBPARTITION p_month_Dec_day_18,\n SUBPARTITION p_month_Dec_day_19,\n SUBPARTITION p_month_Dec_day_20,\n SUBPARTITION p_month_Dec_day_21,\n SUBPARTITION p_month_Dec_day_22,\n SUBPARTITION p_month_Dec_day_23,\n SUBPARTITION p_month_Dec_day_24,\n SUBPARTITION p_month_Dec_day_25,\n SUBPARTITION p_month_Dec_day_26,\n SUBPARTITION p_month_Dec_day_27,\n SUBPARTITION p_month_Dec_day_28,\n SUBPARTITION p_month_Dec_day_29,\n SUBPARTITION p_month_Dec_day_30,\n SUBPARTITION p_month_Dec_day_31\n )\n)", + "len": 18500, + "last": 18500, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 2224, + "idx": 2224, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trips`", + "value": "trips", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Unique trip Id'", + "value": "Unique trip Id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_category`", + "value": "trip_category", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Trip category'", + "value": "Trip category", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_month`", + "value": "trip_month", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Trip month'", + "value": "Trip month", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_date`", + "value": "trip_date", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "date", + "value": "date", + "keyword": "DATE", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'The trip date'", + "value": "The trip date", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_unicode_ci", + "value": "utf8mb4_unicode_ci", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'The trips'", + "value": "The trips", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RANGE", + "value": "RANGE", + "keyword": "RANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trip_month", + "value": "trip_month", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION BY", + "value": "SUBPARTITION BY", + "keyword": "SUBPARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HASH", + "value": "HASH", + "keyword": "HASH", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAY", + "value": "DAY", + "keyword": "DAY", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trip_date", + "value": "trip_date", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan", + "value": "p_month_Jan", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 478 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_0", + "value": "p_month_Jan_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_1", + "value": "p_month_Jan_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 590 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 615 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_2", + "value": "p_month_Jan_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 616 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 634 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_3", + "value": "p_month_Jan_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 677 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_4", + "value": "p_month_Jan_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 722 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 735 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_5", + "value": "p_month_Jan_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 766 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_6", + "value": "p_month_Jan_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 809 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 835 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_7", + "value": "p_month_Jan_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 836 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 854 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_8", + "value": "p_month_Jan_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 911 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_9", + "value": "p_month_Jan_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 942 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 967 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_10", + "value": "p_month_Jan_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1000 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_11", + "value": "p_month_Jan_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1013 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1031 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1045 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_12", + "value": "p_month_Jan_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1076 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1077 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1090 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_13", + "value": "p_month_Jan_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_14", + "value": "p_month_Jan_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_15", + "value": "p_month_Jan_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_16", + "value": "p_month_Jan_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_17", + "value": "p_month_Jan_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_18", + "value": "p_month_Jan_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_19", + "value": "p_month_Jan_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_20", + "value": "p_month_Jan_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_21", + "value": "p_month_Jan_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_22", + "value": "p_month_Jan_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_23", + "value": "p_month_Jan_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1553 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1585 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1597 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_24", + "value": "p_month_Jan_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1598 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1616 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1642 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_25", + "value": "p_month_Jan_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1675 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_26", + "value": "p_month_Jan_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1688 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_27", + "value": "p_month_Jan_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_28", + "value": "p_month_Jan_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1796 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_29", + "value": "p_month_Jan_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1841 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1855 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_30", + "value": "p_month_Jan_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1868 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1886 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jan_day_31", + "value": "p_month_Jan_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1942 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1960 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb", + "value": "p_month_Feb", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1961 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1977 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1983 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 1992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2001 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2002 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 2003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_0", + "value": "p_month_Feb_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2050 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2064 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2076 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_1", + "value": "p_month_Feb_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2077 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2094 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_2", + "value": "p_month_Feb_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_3", + "value": "p_month_Feb_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_4", + "value": "p_month_Feb_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_5", + "value": "p_month_Feb_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_6", + "value": "p_month_Feb_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_7", + "value": "p_month_Feb_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_8", + "value": "p_month_Feb_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_9", + "value": "p_month_Feb_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_10", + "value": "p_month_Feb_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_11", + "value": "p_month_Feb_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2550 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_12", + "value": "p_month_Feb_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2595 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_13", + "value": "p_month_Feb_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2652 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_14", + "value": "p_month_Feb_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2653 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2671 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2697 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_15", + "value": "p_month_Feb_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2716 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_16", + "value": "p_month_Feb_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2761 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_17", + "value": "p_month_Feb_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_18", + "value": "p_month_Feb_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_19", + "value": "p_month_Feb_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2910 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_20", + "value": "p_month_Feb_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2942 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 2955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2967 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_21", + "value": "p_month_Feb_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 2968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 2986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3000 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_22", + "value": "p_month_Feb_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3013 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3031 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3045 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_23", + "value": "p_month_Feb_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3076 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3077 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3090 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_24", + "value": "p_month_Feb_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_25", + "value": "p_month_Feb_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_26", + "value": "p_month_Feb_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_27", + "value": "p_month_Feb_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_28", + "value": "p_month_Feb_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_29", + "value": "p_month_Feb_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_30", + "value": "p_month_Feb_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Feb_day_31", + "value": "p_month_Feb_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar", + "value": "p_month_Mar", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 3482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 3497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 3508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_0", + "value": "p_month_Mar_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3555 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3556 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_1", + "value": "p_month_Mar_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3613 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_2", + "value": "p_month_Mar_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3669 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_3", + "value": "p_month_Mar_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3670 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3688 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3701 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_4", + "value": "p_month_Mar_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3714 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_5", + "value": "p_month_Mar_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3776 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3801 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_6", + "value": "p_month_Mar_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3819 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_7", + "value": "p_month_Mar_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3864 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3889 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_8", + "value": "p_month_Mar_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3890 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3907 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3908 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3921 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_9", + "value": "p_month_Mar_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3934 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3952 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 3965 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3977 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_10", + "value": "p_month_Mar_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 3978 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 3996 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4010 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_11", + "value": "p_month_Mar_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4041 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4055 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4067 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_12", + "value": "p_month_Mar_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4086 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_13", + "value": "p_month_Mar_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_14", + "value": "p_month_Mar_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_15", + "value": "p_month_Mar_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_16", + "value": "p_month_Mar_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_17", + "value": "p_month_Mar_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_18", + "value": "p_month_Mar_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4338 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_19", + "value": "p_month_Mar_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_20", + "value": "p_month_Mar_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_21", + "value": "p_month_Mar_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_22", + "value": "p_month_Mar_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4550 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_23", + "value": "p_month_Mar_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4595 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_24", + "value": "p_month_Mar_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4652 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_25", + "value": "p_month_Mar_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4653 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4671 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4697 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_26", + "value": "p_month_Mar_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4716 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_27", + "value": "p_month_Mar_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4761 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_28", + "value": "p_month_Mar_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_29", + "value": "p_month_Mar_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_30", + "value": "p_month_Mar_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4910 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mar_day_31", + "value": "p_month_Mar_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 4951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4952 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 4961 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4970 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr", + "value": "p_month_Apr", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 4971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 4987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 4993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 5002 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5011 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 5013 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5014 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5015 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5016 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5030 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_0", + "value": "p_month_Apr_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5060 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5061 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5074 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5086 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_1", + "value": "p_month_Apr_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_2", + "value": "p_month_Apr_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_3", + "value": "p_month_Apr_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_4", + "value": "p_month_Apr_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_5", + "value": "p_month_Apr_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_6", + "value": "p_month_Apr_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5338 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_7", + "value": "p_month_Apr_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_8", + "value": "p_month_Apr_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_9", + "value": "p_month_Apr_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_10", + "value": "p_month_Apr_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_11", + "value": "p_month_Apr_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_12", + "value": "p_month_Apr_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_13", + "value": "p_month_Apr_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_14", + "value": "p_month_Apr_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5695 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_15", + "value": "p_month_Apr_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5727 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5740 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_16", + "value": "p_month_Apr_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5753 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5785 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_17", + "value": "p_month_Apr_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_18", + "value": "p_month_Apr_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_19", + "value": "p_month_Apr_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5888 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5906 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5907 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5932 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_20", + "value": "p_month_Apr_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5952 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5965 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5977 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_21", + "value": "p_month_Apr_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 5978 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 5996 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 5997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6010 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_22", + "value": "p_month_Apr_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6041 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6055 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6067 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_23", + "value": "p_month_Apr_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6086 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_24", + "value": "p_month_Apr_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_25", + "value": "p_month_Apr_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_26", + "value": "p_month_Apr_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_27", + "value": "p_month_Apr_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_28", + "value": "p_month_Apr_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_29", + "value": "p_month_Apr_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6338 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_30", + "value": "p_month_Apr_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Apr_day_31", + "value": "p_month_Apr_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai", + "value": "p_month_Mai", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 6492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 6507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 6518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6520 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6535 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_0", + "value": "p_month_Mai_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_1", + "value": "p_month_Mai_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6623 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_2", + "value": "p_month_Mai_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6653 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6654 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_3", + "value": "p_month_Mai_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6697 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_4", + "value": "p_month_Mai_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6741 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_5", + "value": "p_month_Mai_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6785 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6786 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6799 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_6", + "value": "p_month_Mai_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6855 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_7", + "value": "p_month_Mai_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6873 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_8", + "value": "p_month_Mai_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6918 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6943 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_9", + "value": "p_month_Mai_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6944 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 6961 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 6987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_10", + "value": "p_month_Mai_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 6988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_11", + "value": "p_month_Mai_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7065 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7077 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_12", + "value": "p_month_Mai_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7078 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_13", + "value": "p_month_Mai_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_14", + "value": "p_month_Mai_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_15", + "value": "p_month_Mai_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_16", + "value": "p_month_Mai_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_17", + "value": "p_month_Mai_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_18", + "value": "p_month_Mai_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_19", + "value": "p_month_Mai_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_20", + "value": "p_month_Mai_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_21", + "value": "p_month_Mai_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_22", + "value": "p_month_Mai_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_23", + "value": "p_month_Mai_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_24", + "value": "p_month_Mai_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_25", + "value": "p_month_Mai_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7695 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_26", + "value": "p_month_Mai_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7727 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7740 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_27", + "value": "p_month_Mai_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7753 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7785 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_28", + "value": "p_month_Mai_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_29", + "value": "p_month_Mai_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_30", + "value": "p_month_Mai_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7888 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7906 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7907 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7932 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Mai_day_31", + "value": "p_month_Mai_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7960 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 7961 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7980 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun", + "value": "p_month_Jun", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 7981 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 7992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 7997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 8012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 8023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8024 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8025 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8026 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8027 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8040 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_0", + "value": "p_month_Jun_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8070 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8071 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8084 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_1", + "value": "p_month_Jun_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_2", + "value": "p_month_Jun_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_3", + "value": "p_month_Jun_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_4", + "value": "p_month_Jun_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8246 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_5", + "value": "p_month_Jun_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_6", + "value": "p_month_Jun_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_7", + "value": "p_month_Jun_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_8", + "value": "p_month_Jun_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_9", + "value": "p_month_Jun_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_10", + "value": "p_month_Jun_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_11", + "value": "p_month_Jun_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8556 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_12", + "value": "p_month_Jun_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8601 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8615 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_13", + "value": "p_month_Jun_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_14", + "value": "p_month_Jun_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_15", + "value": "p_month_Jun_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8736 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8750 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_16", + "value": "p_month_Jun_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_17", + "value": "p_month_Jun_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8826 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8840 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_18", + "value": "p_month_Jun_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8871 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8872 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_19", + "value": "p_month_Jun_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8942 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_20", + "value": "p_month_Jun_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8943 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 8961 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 8975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_21", + "value": "p_month_Jun_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 8988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_22", + "value": "p_month_Jun_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9065 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9077 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_23", + "value": "p_month_Jun_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9078 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_24", + "value": "p_month_Jun_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_25", + "value": "p_month_Jun_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_26", + "value": "p_month_Jun_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_27", + "value": "p_month_Jun_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_28", + "value": "p_month_Jun_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_29", + "value": "p_month_Jun_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_30", + "value": "p_month_Jun_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jun_day_31", + "value": "p_month_Jun_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9485 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul", + "value": "p_month_Jul", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 9502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 9517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "6", + "value": 6, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 9528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9529 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_0", + "value": "p_month_Jul_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9575 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9601 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_1", + "value": "p_month_Jul_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9620 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9645 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_2", + "value": "p_month_Jul_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9677 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_3", + "value": "p_month_Jul_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9690 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_4", + "value": "p_month_Jul_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9734 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_5", + "value": "p_month_Jul_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9796 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9809 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_6", + "value": "p_month_Jul_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9839 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9840 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_7", + "value": "p_month_Jul_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9909 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_8", + "value": "p_month_Jul_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9910 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_9", + "value": "p_month_Jul_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9954 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 9971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 9985 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_10", + "value": "p_month_Jul_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 9998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10016 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10030 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_11", + "value": "p_month_Jul_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10061 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10062 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10075 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_12", + "value": "p_month_Jul_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_13", + "value": "p_month_Jul_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_14", + "value": "p_month_Jul_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_15", + "value": "p_month_Jul_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_16", + "value": "p_month_Jul_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_17", + "value": "p_month_Jul_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_18", + "value": "p_month_Jul_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_19", + "value": "p_month_Jul_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_20", + "value": "p_month_Jul_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_21", + "value": "p_month_Jul_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_22", + "value": "p_month_Jul_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10556 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_23", + "value": "p_month_Jul_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10601 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10615 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_24", + "value": "p_month_Jul_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_25", + "value": "p_month_Jul_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_26", + "value": "p_month_Jul_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10736 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10750 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_27", + "value": "p_month_Jul_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_28", + "value": "p_month_Jul_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10826 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10840 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_29", + "value": "p_month_Jul_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10871 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10872 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_30", + "value": "p_month_Jul_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10942 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Jul_day_31", + "value": "p_month_Jul_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10943 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10961 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10970 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 10971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10981 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10990 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug", + "value": "p_month_Aug", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 10991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11002 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 11007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11013 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 11022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11031 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "7", + "value": 7, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 11033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11036 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11037 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11050 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11062 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_0", + "value": "p_month_Aug_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11063 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11080 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11081 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11094 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_1", + "value": "p_month_Aug_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_2", + "value": "p_month_Aug_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_3", + "value": "p_month_Aug_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_4", + "value": "p_month_Aug_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_5", + "value": "p_month_Aug_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_6", + "value": "p_month_Aug_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_7", + "value": "p_month_Aug_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_8", + "value": "p_month_Aug_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11432 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_9", + "value": "p_month_Aug_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_10", + "value": "p_month_Aug_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11503 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11535 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_11", + "value": "p_month_Aug_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_12", + "value": "p_month_Aug_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_13", + "value": "p_month_Aug_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11670 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_14", + "value": "p_month_Aug_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11701 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11727 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_15", + "value": "p_month_Aug_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11728 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11760 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_16", + "value": "p_month_Aug_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11773 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_17", + "value": "p_month_Aug_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11818 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11836 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11837 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_18", + "value": "p_month_Aug_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11907 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_19", + "value": "p_month_Aug_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11908 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11926 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11952 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_20", + "value": "p_month_Aug_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 11971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11985 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_21", + "value": "p_month_Aug_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 11998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12016 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12030 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_22", + "value": "p_month_Aug_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12061 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12062 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12075 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_23", + "value": "p_month_Aug_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_24", + "value": "p_month_Aug_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_25", + "value": "p_month_Aug_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_26", + "value": "p_month_Aug_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_27", + "value": "p_month_Aug_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_28", + "value": "p_month_Aug_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_29", + "value": "p_month_Aug_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_30", + "value": "p_month_Aug_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Aug_day_31", + "value": "p_month_Aug_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 12486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep", + "value": "p_month_Sep", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 12512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 12527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 12538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12555 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_0", + "value": "p_month_Sep_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12585 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12586 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_1", + "value": "p_month_Sep_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12629 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_2", + "value": "p_month_Sep_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_3", + "value": "p_month_Sep_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12700 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_4", + "value": "p_month_Sep_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12761 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_5", + "value": "p_month_Sep_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12819 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_6", + "value": "p_month_Sep_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12849 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_7", + "value": "p_month_Sep_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12876 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12893 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12907 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_8", + "value": "p_month_Sep_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12937 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12963 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_9", + "value": "p_month_Sep_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 12964 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 12981 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12995 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_10", + "value": "p_month_Sep_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13008 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13026 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13027 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13040 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_11", + "value": "p_month_Sep_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13071 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13085 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_12", + "value": "p_month_Sep_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13098 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_13", + "value": "p_month_Sep_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_14", + "value": "p_month_Sep_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_15", + "value": "p_month_Sep_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_16", + "value": "p_month_Sep_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_17", + "value": "p_month_Sep_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_18", + "value": "p_month_Sep_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_19", + "value": "p_month_Sep_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13431 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13432 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_20", + "value": "p_month_Sep_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_21", + "value": "p_month_Sep_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13503 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13535 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_22", + "value": "p_month_Sep_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_23", + "value": "p_month_Sep_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_24", + "value": "p_month_Sep_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13670 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_25", + "value": "p_month_Sep_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13701 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13727 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_26", + "value": "p_month_Sep_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13728 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13760 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_27", + "value": "p_month_Sep_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13773 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_28", + "value": "p_month_Sep_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13818 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13836 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13837 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_29", + "value": "p_month_Sep_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13907 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_30", + "value": "p_month_Sep_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13908 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13926 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13952 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Sep_day_31", + "value": "p_month_Sep_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 13953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13980 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 13981 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14000 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct", + "value": "p_month_Oct", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14001 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 14017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 14032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14041 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "9", + "value": 9, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 14043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14044 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14045 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14060 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_0", + "value": "p_month_Oct_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14073 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14090 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14091 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_1", + "value": "p_month_Oct_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_2", + "value": "p_month_Oct_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_3", + "value": "p_month_Oct_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_4", + "value": "p_month_Oct_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_5", + "value": "p_month_Oct_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_6", + "value": "p_month_Oct_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14354 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_7", + "value": "p_month_Oct_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_8", + "value": "p_month_Oct_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_9", + "value": "p_month_Oct_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_10", + "value": "p_month_Oct_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_11", + "value": "p_month_Oct_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14590 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_12", + "value": "p_month_Oct_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14621 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14622 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_13", + "value": "p_month_Oct_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_14", + "value": "p_month_Oct_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14693 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14712 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_15", + "value": "p_month_Oct_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14770 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_16", + "value": "p_month_Oct_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14801 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14815 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_17", + "value": "p_month_Oct_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14847 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14872 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_18", + "value": "p_month_Oct_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14873 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14891 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14892 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14905 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_19", + "value": "p_month_Oct_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14918 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14936 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14937 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_20", + "value": "p_month_Oct_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 14963 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 14981 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 14995 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_21", + "value": "p_month_Oct_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15008 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15026 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15027 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15040 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_22", + "value": "p_month_Oct_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15071 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15085 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_23", + "value": "p_month_Oct_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15098 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_24", + "value": "p_month_Oct_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_25", + "value": "p_month_Oct_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_26", + "value": "p_month_Oct_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_27", + "value": "p_month_Oct_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_28", + "value": "p_month_Oct_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_29", + "value": "p_month_Oct_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_30", + "value": "p_month_Oct_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15431 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15432 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Oct_day_31", + "value": "p_month_Oct_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15485 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov", + "value": "p_month_Nov", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 15522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 15537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 15548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15550 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15553 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_0", + "value": "p_month_Nov_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15597 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15622 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_1", + "value": "p_month_Nov_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15623 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15654 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_2", + "value": "p_month_Nov_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15684 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_3", + "value": "p_month_Nov_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15728 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15729 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_4", + "value": "p_month_Nov_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15773 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15786 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_5", + "value": "p_month_Nov_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15799 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_6", + "value": "p_month_Nov_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15886 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_7", + "value": "p_month_Nov_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15905 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15918 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_8", + "value": "p_month_Nov_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_9", + "value": "p_month_Nov_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 15975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 15992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_10", + "value": "p_month_Nov_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16037 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16038 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16063 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_11", + "value": "p_month_Nov_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16064 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16082 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16083 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_12", + "value": "p_month_Nov_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_13", + "value": "p_month_Nov_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_14", + "value": "p_month_Nov_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_15", + "value": "p_month_Nov_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_16", + "value": "p_month_Nov_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_17", + "value": "p_month_Nov_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_18", + "value": "p_month_Nov_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_19", + "value": "p_month_Nov_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_20", + "value": "p_month_Nov_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_21", + "value": "p_month_Nov_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_22", + "value": "p_month_Nov_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_23", + "value": "p_month_Nov_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16622 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16623 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_24", + "value": "p_month_Nov_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16693 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_25", + "value": "p_month_Nov_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16694 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16712 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_26", + "value": "p_month_Nov_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16739 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_27", + "value": "p_month_Nov_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_28", + "value": "p_month_Nov_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16847 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16848 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16873 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_29", + "value": "p_month_Nov_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16892 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16893 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16906 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16918 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_30", + "value": "p_month_Nov_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16937 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16963 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Nov_day_31", + "value": "p_month_Nov_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 16964 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 16992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17002 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17011 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec", + "value": "p_month_Dec", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 17028 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 17043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 17054 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17056 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17059 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17084 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_0", + "value": "p_month_Dec_day_0", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17085 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_1", + "value": "p_month_Dec_day_1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_2", + "value": "p_month_Dec_day_2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_3", + "value": "p_month_Dec_day_3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_4", + "value": "p_month_Dec_day_4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_5", + "value": "p_month_Dec_day_5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_6", + "value": "p_month_Dec_day_6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_7", + "value": "p_month_Dec_day_7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_8", + "value": "p_month_Dec_day_8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_9", + "value": "p_month_Dec_day_9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_10", + "value": "p_month_Dec_day_10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17543 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17544 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_11", + "value": "p_month_Dec_day_11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17614 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_12", + "value": "p_month_Dec_day_12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17615 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17634 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_13", + "value": "p_month_Dec_day_13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_14", + "value": "p_month_Dec_day_14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17749 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_15", + "value": "p_month_Dec_day_15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17750 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17769 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_16", + "value": "p_month_Dec_day_16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17839 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_17", + "value": "p_month_Dec_day_17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17840 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17859 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17872 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_18", + "value": "p_month_Dec_day_18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17929 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_19", + "value": "p_month_Dec_day_19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_20", + "value": "p_month_Dec_day_20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 17975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 17993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_21", + "value": "p_month_Dec_day_21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18038 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18039 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18064 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_22", + "value": "p_month_Dec_day_22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18065 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18083 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18084 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_23", + "value": "p_month_Dec_day_23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_24", + "value": "p_month_Dec_day_24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_25", + "value": "p_month_Dec_day_25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_26", + "value": "p_month_Dec_day_26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_27", + "value": "p_month_Dec_day_27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_28", + "value": "p_month_Dec_day_28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18354 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_29", + "value": "p_month_Dec_day_29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_30", + "value": "p_month_Dec_day_30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 18457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p_month_Dec_day_31", + "value": "p_month_Dec_day_31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 18470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 18499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "trips", + "column": null, + "expr": "`trips`", + "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" + }, + "6": { + "name": "COLLATE", + "equals": true, + "expr": "utf8mb4_unicode_ci", + "value": "utf8mb4_unicode_ci" + }, + "7": { + "name": "COMMENT", + "equals": true, + "expr": "'The trips'", + "value": "The trips" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "BIGINT", + "parameters": [ + "20" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Unique trip Id'", + "value": "Unique trip Id" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_category", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Trip category'", + "value": "Trip category" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_month", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Trip month'", + "value": "Trip month" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_date", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DATE", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'The trip date'", + "value": "The trip date" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": "RANGE(trip_month)", + "partitionsNum": null, + "subpartitionBy": "HASH(DAY(trip_date))", + "subpartitionsNum": null, + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(0)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jan_day_31", + "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", + "partitionOptions": { + "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": "p_month_Feb", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(1)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Feb_day_31", + "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", + "partitionOptions": { + "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": "p_month_Mar", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(2)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mar_day_31", + "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", + "partitionOptions": { + "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": "p_month_Apr", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(3)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Apr_day_31", + "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", + "partitionOptions": { + "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": "p_month_Mai", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(4)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Mai_day_31", + "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", + "partitionOptions": { + "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": "p_month_Jun", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(5)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jun_day_31", + "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", + "partitionOptions": { + "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": "p_month_Jul", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(6)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Jul_day_31", + "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", + "partitionOptions": { + "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": "p_month_Aug", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(7)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Aug_day_31", + "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", + "partitionOptions": { + "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": "p_month_Sep", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(8)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Sep_day_31", + "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", + "partitionOptions": { + "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": "p_month_Oct", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(9)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Oct_day_31", + "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", + "partitionOptions": { + "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": "p_month_Nov", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(10)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Nov_day_31", + "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", + "partitionOptions": { + "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": "p_month_Dec", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(11)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_6", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_7", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_8", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_9", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_10", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_11", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_12", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_13", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_14", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_15", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_16", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_17", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_18", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_19", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_20", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_21", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_22", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_23", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_24", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_25", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_26", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_27", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_28", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_29", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_30", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p_month_Dec_day_31", + "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": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 2222 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable12.in b/tests/data/parser/parseCreateTable12.in new file mode 100644 index 000000000..a03b4b611 --- /dev/null +++ b/tests/data/parser/parseCreateTable12.in @@ -0,0 +1,3 @@ +CREATE OR REPLACE TABLE t1 (v1 INT) + PARTITION BY KEY (v1) + PARTITIONS 2; \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable12.out b/tests/data/parser/parseCreateTable12.out new file mode 100644 index 000000000..63b2408e8 --- /dev/null +++ b/tests/data/parser/parseCreateTable12.out @@ -0,0 +1,405 @@ +{ + "query": "CREATE OR REPLACE TABLE t1 (v1 INT)\n PARTITION BY KEY (v1)\n PARTITIONS 2;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE OR REPLACE TABLE t1 (v1 INT)\n PARTITION BY KEY (v1)\n PARTITIONS 2;", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 27, + "idx": 27, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OR REPLACE", + "value": "OR REPLACE", + "keyword": "OR REPLACE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "v1", + "value": "v1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "v1", + "value": "v1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITIONS", + "value": "PARTITIONS", + "keyword": "PARTITIONS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "v1", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": "KEY (v1)", + "partitionsNum": 2, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "OR REPLACE", + "6": "TABLE" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable13.in b/tests/data/parser/parseCreateTable13.in new file mode 100644 index 000000000..21a2c796a --- /dev/null +++ b/tests/data/parser/parseCreateTable13.in @@ -0,0 +1,6 @@ +CREATE TABLE autos ( + auto_id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY, + make VARCHAR(128), + year INTEGER, + mileage INTEGER +); \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable13.out b/tests/data/parser/parseCreateTable13.out new file mode 100644 index 000000000..357ebfd55 --- /dev/null +++ b/tests/data/parser/parseCreateTable13.out @@ -0,0 +1,629 @@ +{ + "query": "CREATE TABLE autos (\n auto_id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY,\n make VARCHAR(128),\n year INTEGER,\n mileage INTEGER\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE autos (\n auto_id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY,\n make VARCHAR(128),\n year INTEGER,\n mileage INTEGER\n);", + "len": 138, + "last": 138, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 41, + "idx": 41, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "autos", + "value": "autos", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "auto_id", + "value": "auto_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "make", + "value": "make", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "128", + "value": 128, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTEGER", + "value": "INTEGER", + "keyword": "INTEGER", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mileage", + "value": "mileage", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTEGER", + "value": "INTEGER", + "keyword": "INTEGER", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@47" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "autos", + "column": null, + "expr": "autos", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "auto_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT", + "4": "KEY" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "make", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "128" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "year", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INTEGER", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "mileage", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INTEGER", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 39 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable14.in b/tests/data/parser/parseCreateTable14.in new file mode 100644 index 000000000..b1f81bd83 --- /dev/null +++ b/tests/data/parser/parseCreateTable14.in @@ -0,0 +1,6 @@ +CREATE TABLE autos ( + auto_id INT UNSIGNED NOT NULL KEY, + make VARCHAR(128), + year INTEGER, + mileage INTEGER +); \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable14.out b/tests/data/parser/parseCreateTable14.out new file mode 100644 index 000000000..f42373d60 --- /dev/null +++ b/tests/data/parser/parseCreateTable14.out @@ -0,0 +1,606 @@ +{ + "query": "CREATE TABLE autos (\n auto_id INT UNSIGNED NOT NULL KEY,\n make VARCHAR(128),\n year INTEGER,\n mileage INTEGER\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE autos (\n auto_id INT UNSIGNED NOT NULL KEY,\n make VARCHAR(128),\n year INTEGER,\n mileage INTEGER\n);", + "len": 123, + "last": 123, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 39, + "idx": 39, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "autos", + "value": "autos", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "auto_id", + "value": "auto_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "make", + "value": "make", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "128", + "value": 128, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTEGER", + "value": "INTEGER", + "keyword": "INTEGER", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mileage", + "value": "mileage", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTEGER", + "value": "INTEGER", + "keyword": "INTEGER", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "autos", + "column": null, + "expr": "autos", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "auto_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "4": "KEY" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "make", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "128" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "year", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INTEGER", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "mileage", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INTEGER", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 37 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable15.in b/tests/data/parser/parseCreateTable15.in new file mode 100644 index 000000000..310716d37 --- /dev/null +++ b/tests/data/parser/parseCreateTable15.in @@ -0,0 +1,6 @@ +CREATE TABLE autos ( + auto_id INT UNSIGNED ZEROFILL NOT NULL KEY, + make VARCHAR(128), + year INTEGER, + mileage INTEGER +); \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable15.out b/tests/data/parser/parseCreateTable15.out new file mode 100644 index 000000000..8425bc2cf --- /dev/null +++ b/tests/data/parser/parseCreateTable15.out @@ -0,0 +1,629 @@ +{ + "query": "CREATE TABLE autos (\n auto_id INT UNSIGNED ZEROFILL NOT NULL KEY,\n make VARCHAR(128),\n year INTEGER,\n mileage INTEGER\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE autos (\n auto_id INT UNSIGNED ZEROFILL NOT NULL KEY,\n make VARCHAR(128),\n year INTEGER,\n mileage INTEGER\n);", + "len": 132, + "last": 132, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 41, + "idx": 41, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "autos", + "value": "autos", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "auto_id", + "value": "auto_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ZEROFILL", + "value": "ZEROFILL", + "keyword": "ZEROFILL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "make", + "value": "make", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "128", + "value": 128, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTEGER", + "value": "INTEGER", + "keyword": "INTEGER", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mileage", + "value": "mileage", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTEGER", + "value": "INTEGER", + "keyword": "INTEGER", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@47" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "autos", + "column": null, + "expr": "autos", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "auto_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED", + "5": "ZEROFILL" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "4": "KEY" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "make", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "128" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "year", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INTEGER", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "mileage", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INTEGER", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 39 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable16.in b/tests/data/parser/parseCreateTable16.in new file mode 100644 index 000000000..ca8067fd5 --- /dev/null +++ b/tests/data/parser/parseCreateTable16.in @@ -0,0 +1,4 @@ +CREATE TABLE test ( + user_id INT, + INDEX `test` (user_id ASC) +) \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable16.out b/tests/data/parser/parseCreateTable16.out new file mode 100644 index 000000000..484b0878f --- /dev/null +++ b/tests/data/parser/parseCreateTable16.out @@ -0,0 +1,406 @@ +{ + "query": "CREATE TABLE test (\n user_id INT,\n INDEX `test` (user_id ASC)\n)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE test (\n user_id INT,\n INDEX `test` (user_id ASC)\n)", + "len": 65, + "last": 65, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user_id", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test`", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user_id", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "user_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": "test", + "columns": [ + { + "name": "user_id", + "order": "ASC" + } + ], + "type": "INDEX", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable17.in b/tests/data/parser/parseCreateTable17.in new file mode 100644 index 000000000..1e290e216 --- /dev/null +++ b/tests/data/parser/parseCreateTable17.in @@ -0,0 +1,8 @@ +CREATE TABLE `autos8` ( + `auto_id` int(10) UNSIGNED NOT NULL UNIQUE KEY, + `make` varchar(128) DEFAULT NULL, + `year` int(11) DEFAULT NULL, + `mileage` int(11) DEFAULT NULL, + `city` point NOT NULL, + SPATIAL INDEX `city_index` (`city`) +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci; \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable17.out b/tests/data/parser/parseCreateTable17.out new file mode 100644 index 000000000..5f8aaf461 --- /dev/null +++ b/tests/data/parser/parseCreateTable17.out @@ -0,0 +1,1332 @@ +{ + "query": "CREATE TABLE `autos8` (\n `auto_id` int(10) UNSIGNED NOT NULL UNIQUE KEY,\n `make` varchar(128) DEFAULT NULL,\n `year` int(11) DEFAULT NULL,\n `mileage` int(11) DEFAULT NULL,\n `city` point NOT NULL,\n SPATIAL INDEX `city_index` (`city`)\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `autos8` (\n `auto_id` int(10) UNSIGNED NOT NULL UNIQUE KEY,\n `make` varchar(128) DEFAULT NULL,\n `year` int(11) DEFAULT NULL,\n `mileage` int(11) DEFAULT NULL,\n `city` point NOT NULL,\n SPATIAL INDEX `city_index` (`city`)\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;", + "len": 323, + "last": 323, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 94, + "idx": 94, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`autos8`", + "value": "autos8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`auto_id`", + "value": "auto_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE KEY", + "value": "UNIQUE KEY", + "keyword": "UNIQUE KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`make`", + "value": "make", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "128", + "value": 128, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`year`", + "value": "year", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mileage`", + "value": "mileage", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`city`", + "value": "city", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "point", + "value": "point", + "keyword": "POINT", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SPATIAL INDEX", + "value": "SPATIAL INDEX", + "keyword": "SPATIAL INDEX", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`city_index`", + "value": "city_index", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`city`", + "value": "city", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@87" + }, + "flags": 0, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_general_ci", + "value": "utf8mb4_general_ci", + "keyword": null, + "type": { + "@type": "@87" + }, + "flags": 0, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@101" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "autos8", + "column": null, + "expr": "`autos8`", + "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" + }, + "6": { + "name": "COLLATE", + "equals": true, + "expr": "utf8mb4_general_ci", + "value": "utf8mb4_general_ci" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "auto_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "10" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "4": "UNIQUE KEY" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "make", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "128" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "year", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "mileage", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "city", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "POINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": "city_index", + "columns": [ + { + "name": "city" + } + ], + "type": "SPATIAL INDEX", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 92 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable18.in b/tests/data/parser/parseCreateTable18.in new file mode 100644 index 000000000..1062bfb3e --- /dev/null +++ b/tests/data/parser/parseCreateTable18.in @@ -0,0 +1,6 @@ +CREATE TABLE test ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + data VARCHAR(64) DEFAULT NULL, + ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable18.out b/tests/data/parser/parseCreateTable18.out new file mode 100644 index 000000000..71d49cd20 --- /dev/null +++ b/tests/data/parser/parseCreateTable18.out @@ -0,0 +1,832 @@ +{ + "query": "CREATE TABLE test (\n id INT UNSIGNED NOT NULL AUTO_INCREMENT,\n data VARCHAR(64) DEFAULT NULL,\n ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n PRIMARY KEY (id)\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE test (\n id INT UNSIGNED NOT NULL AUTO_INCREMENT,\n data VARCHAR(64) DEFAULT NULL,\n ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n PRIMARY KEY (id)\n);", + "len": 196, + "last": 196, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 55, + "idx": 55, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "data", + "value": "data", + "keyword": "DATA", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "64", + "value": 64, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ts", + "value": "ts", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TIMESTAMP", + "value": "TIMESTAMP", + "keyword": "TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@61" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "data", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "64" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "ts", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TIMESTAMP", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "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", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "id" + } + ], + "type": "PRIMARY KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 53 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable2.out b/tests/data/parser/parseCreateTable2.out index 182869d4b..4883b6d02 100644 --- a/tests/data/parser/parseCreateTable2.out +++ b/tests/data/parser/parseCreateTable2.out @@ -1,46 +1,2907 @@ -a:4:{s:5:"query";s:940:"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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:940:"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";s:3:"len";i:940;s:4:"last";i:940;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:212:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`payment`";s:5:"value";s:7:"payment";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`payment_id`";s:5:"value";s:10:"payment_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"smallint";s:5:"value";s:8:"SMALLINT";s:7:"keyword";s:8:"SMALLINT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:40;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:48;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"5";s:5:"value";i:5;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:49;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:50;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"unsigned";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:52;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:61;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:84;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`customer_id`";s:5:"value";s:11:"customer_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:88;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"smallint";s:5:"value";s:8:"SMALLINT";s:7:"keyword";s:8:"SMALLINT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:102;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:110;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"5";s:5:"value";i:5;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:111;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:112;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"unsigned";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:114;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:122;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:123;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:131;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:132;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`staff_id`";s:5:"value";s:8:"staff_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:135;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:145;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"tinyint";s:5:"value";s:7:"TINYINT";s:7:"keyword";s:7:"TINYINT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:146;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:153;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"3";s:5:"value";i:3;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:154;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:155;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:156;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"unsigned";s:5:"value";s:8:"UNSIGNED";s:7:"keyword";s:8:"UNSIGNED";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:157;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:165;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:166;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:174;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:175;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`rental_id`";s:5:"value";s:9:"rental_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:178;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:189;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"int";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:190;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:193;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:194;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:196;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:197;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:198;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:205;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:206;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:210;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:211;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`amount`";s:5:"value";s:6:"amount";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:214;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:222;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"decimal";s:5:"value";s:7:"DECIMAL";s:7:"keyword";s:7:"DECIMAL";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:223;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:230;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"5";s:5:"value";i:5;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:231;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:232;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:233;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:234;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:235;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:236;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:244;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:245;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"`payment_date`";s:5:"value";s:12:"payment_date";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:248;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:262;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"datetime";s:5:"value";s:8:"datetime";s:7:"keyword";s:8:"DATETIME";s:4:"type";i:1;s:5:"flags";i:9;s:8:"position";i:263;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:271;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:272;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:280;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:281;}i:77;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`last_update`";s:5:"value";s:11:"last_update";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:284;}i:78;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:297;}i:79;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"timestamp";s:5:"value";s:9:"timestamp";s:7:"keyword";s:9:"TIMESTAMP";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:298;}i:80;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:307;}i:81;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:308;}i:82;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:316;}i:83;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:317;}i:84;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:324;}i:85;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"CURRENT_TIMESTAMP";s:5:"value";s:17:"CURRENT_TIMESTAMP";s:7:"keyword";s:17:"CURRENT_TIMESTAMP";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:325;}i:86;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:342;}i:87;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ON UPDATE";s:5:"value";s:9:"ON UPDATE";s:7:"keyword";s:9:"ON UPDATE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:343;}i:88;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:352;}i:89;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"CURRENT_TIMESTAMP";s:5:"value";s:17:"CURRENT_TIMESTAMP";s:7:"keyword";s:17:"CURRENT_TIMESTAMP";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:353;}i:90;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:370;}i:91;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:371;}i:92;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:374;}i:93;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:385;}i:94;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:386;}i:95;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`payment_id`";s:5:"value";s:10:"payment_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:387;}i:96;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:399;}i:97;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:400;}i:98;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:401;}i:99;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:404;}i:100;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:407;}i:101;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"`idx_fk_staff_id`";s:5:"value";s:15:"idx_fk_staff_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:408;}i:102;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:425;}i:103;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:426;}i:104;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`staff_id`";s:5:"value";s:8:"staff_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:427;}i:105;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:437;}i:106;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:438;}i:107;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:439;}i:108;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:442;}i:109;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:445;}i:110;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:20:"`idx_fk_customer_id`";s:5:"value";s:18:"idx_fk_customer_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:446;}i:111;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:466;}i:112;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:467;}i:113;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`customer_id`";s:5:"value";s:11:"customer_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:468;}i:114;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:481;}i:115;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:482;}i:116;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:483;}i:117;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:486;}i:118;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:489;}i:119;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:19:"`fk_payment_rental`";s:5:"value";s:17:"fk_payment_rental";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:490;}i:120;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:509;}i:121;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:510;}i:122;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`rental_id`";s:5:"value";s:9:"rental_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:511;}i:123;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:522;}i:124;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:523;}i:125;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:524;}i:126;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONSTRAINT";s:5:"value";s:10:"CONSTRAINT";s:7:"keyword";s:10:"CONSTRAINT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:527;}i:127;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:537;}i:128;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:21:"`fk_payment_customer`";s:5:"value";s:19:"fk_payment_customer";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:538;}i:129;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:559;}i:130;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"FOREIGN KEY";s:5:"value";s:11:"FOREIGN KEY";s:7:"keyword";s:11:"FOREIGN KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:560;}i:131;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:571;}i:132;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:572;}i:133;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`customer_id`";s:5:"value";s:11:"customer_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:573;}i:134;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:586;}i:135;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:587;}i:136;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"REFERENCES";s:5:"value";s:10:"REFERENCES";s:7:"keyword";s:10:"REFERENCES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:588;}i:137;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:598;}i:138;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`customer`";s:5:"value";s:8:"customer";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:599;}i:139;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:609;}i:140;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:610;}i:141;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`customer_id`";s:5:"value";s:11:"customer_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:611;}i:142;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:624;}i:143;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:625;}i:144;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ON UPDATE";s:5:"value";s:9:"ON UPDATE";s:7:"keyword";s:9:"ON UPDATE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:626;}i:145;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:635;}i:146;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CASCADE";s:5:"value";s:7:"CASCADE";s:7:"keyword";s:7:"CASCADE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:636;}i:147;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:643;}i:148;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:644;}i:149;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONSTRAINT";s:5:"value";s:10:"CONSTRAINT";s:7:"keyword";s:10:"CONSTRAINT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:647;}i:150;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:657;}i:151;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:19:"`fk_payment_rental`";s:5:"value";s:17:"fk_payment_rental";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:658;}i:152;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:677;}i:153;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"FOREIGN KEY";s:5:"value";s:11:"FOREIGN KEY";s:7:"keyword";s:11:"FOREIGN KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:678;}i:154;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:689;}i:155;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:690;}i:156;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`rental_id`";s:5:"value";s:9:"rental_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:691;}i:157;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:702;}i:158;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:703;}i:159;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"REFERENCES";s:5:"value";s:10:"REFERENCES";s:7:"keyword";s:10:"REFERENCES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:704;}i:160;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:714;}i:161;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`rental`";s:5:"value";s:6:"rental";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:715;}i:162;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:723;}i:163;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:724;}i:164;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`rental_id`";s:5:"value";s:9:"rental_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:725;}i:165;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:736;}i:166;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:737;}i:167;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ON DELETE";s:5:"value";s:9:"ON DELETE";s:7:"keyword";s:9:"ON DELETE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:738;}i:168;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:747;}i:169;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"SET NULL";s:5:"value";s:8:"SET NULL";s:7:"keyword";s:8:"SET NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:748;}i:170;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:756;}i:171;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ON UPDATE";s:5:"value";s:9:"ON UPDATE";s:7:"keyword";s:9:"ON UPDATE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:757;}i:172;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:766;}i:173;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CASCADE";s:5:"value";s:7:"CASCADE";s:7:"keyword";s:7:"CASCADE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:767;}i:174;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:774;}i:175;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:775;}i:176;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONSTRAINT";s:5:"value";s:10:"CONSTRAINT";s:7:"keyword";s:10:"CONSTRAINT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:778;}i:177;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:788;}i:178;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"`fk_payment_staff`";s:5:"value";s:16:"fk_payment_staff";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:789;}i:179;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:807;}i:180;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"FOREIGN KEY";s:5:"value";s:11:"FOREIGN KEY";s:7:"keyword";s:11:"FOREIGN KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:808;}i:181;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:819;}i:182;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:820;}i:183;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`staff_id`";s:5:"value";s:8:"staff_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:821;}i:184;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:831;}i:185;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:832;}i:186;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"REFERENCES";s:5:"value";s:10:"REFERENCES";s:7:"keyword";s:10:"REFERENCES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:833;}i:187;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:843;}i:188;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`staff`";s:5:"value";s:5:"staff";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:844;}i:189;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:851;}i:190;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:852;}i:191;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`staff_id`";s:5:"value";s:8:"staff_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:853;}i:192;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:863;}i:193;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:864;}i:194;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ON UPDATE";s:5:"value";s:9:"ON UPDATE";s:7:"keyword";s:9:"ON UPDATE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:865;}i:195;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:874;}i:196;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CASCADE";s:5:"value";s:7:"CASCADE";s:7:"keyword";s:7:"CASCADE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:875;}i:197;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:882;}i:198;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:883;}i:199;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:884;}i:200;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:885;}i:201;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:891;}i:202;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:892;}i:203;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:898;}i:204;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:899;}i:205;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:913;}i:206;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"16050";s:5:"value";i:16050;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:914;}i:207;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:919;}i:208;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"DEFAULT CHARSET";s:5:"value";s:15:"DEFAULT CHARSET";s:7:"keyword";s:15:"DEFAULT CHARSET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:920;}i:209;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:935;}i:210;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"utf8";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:936;}i:211;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:212;s:3:"idx";i:212;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"payment";s:6:"column";N;s:4:"expr";s:9:"`payment`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:3:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}i:2;a:4:{s:4:"name";s:14:"AUTO_INCREMENT";s:6:"equals";b:1;s:4:"expr";s:5:"16050";s:5:"value";s:5:"16050";}i:4;a:4:{s:4:"name";s:15:"DEFAULT CHARSET";s:6:"equals";b:1;s:4:"expr";s:4:"utf8";s:5:"value";s:4:"utf8";}}}s:6:"fields";a:14:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:10:"payment_id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:8:"SMALLINT";s:10:"parameters";a:1:{i:0;s:1:"5";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:4;s:8:"UNSIGNED";}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:8:"NOT NULL";i:3;s:14:"AUTO_INCREMENT";}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:11:"customer_id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:8:"SMALLINT";s:10:"parameters";a:1:{i:0;s:1:"5";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:4;s:8:"UNSIGNED";}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:2;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:8:"staff_id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"TINYINT";s:10:"parameters";a:1:{i:0;s:1:"3";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:4;s:8:"UNSIGNED";}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:3;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:9:"rental_id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:1:{i:0;s:2:"11";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:4:"NULL";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"NULL";}}}}i:4;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:6:"amount";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"DECIMAL";s:10:"parameters";a:2:{i:0;s:1:"5";i:1;s:1:"2";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:5;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:12:"payment_date";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:8:"DATETIME";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:6;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:11:"last_update";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:9:"TIMESTAMP";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:3:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:17:"CURRENT_TIMESTAMP";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:17:"CURRENT_TIMESTAMP";}i:7;a:4:{s:4:"name";s:9:"ON UPDATE";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:17:"CURRENT_TIMESTAMP";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:17:"CURRENT_TIMESTAMP";}}}}i:7;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:10:"payment_id";}}s:4:"type";s:11:"PRIMARY KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}i:8;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";s:15:"idx_fk_staff_id";s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:8:"staff_id";}}s:4:"type";s:3:"KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}i:9;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";s:18:"idx_fk_customer_id";s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:11:"customer_id";}}s:4:"type";s:3:"KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}i:10;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";s:17:"fk_payment_rental";s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:9:"rental_id";}}s:4:"type";s:3:"KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}i:11;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:19:"fk_payment_customer";s:12:"isConstraint";b:1;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:11:"customer_id";}}s:4:"type";s:11:"FOREIGN KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";O:41:"PhpMyAdmin\SqlParser\Components\Reference":3:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"customer";s:6:"column";N;s:4:"expr";s:10:"`customer`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:11:"customer_id";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:9:"ON UPDATE";s:6:"equals";b:0;s:4:"expr";s:7:"CASCADE";s:5:"value";s:7:"CASCADE";}}}}s:7:"options";N;}i:12;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:17:"fk_payment_rental";s:12:"isConstraint";b:1;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:9:"rental_id";}}s:4:"type";s:11:"FOREIGN KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";O:41:"PhpMyAdmin\SqlParser\Components\Reference":3:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"rental";s:6:"column";N;s:4:"expr";s:8:"`rental`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:9:"rental_id";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:2;a:4:{s:4:"name";s:9:"ON DELETE";s:6:"equals";b:0;s:4:"expr";s:8:"SET NULL";s:5:"value";s:8:"SET NULL";}i:3;a:4:{s:4:"name";s:9:"ON UPDATE";s:6:"equals";b:0;s:4:"expr";s:7:"CASCADE";s:5:"value";s:7:"CASCADE";}}}}s:7:"options";N;}i:13;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:16:"fk_payment_staff";s:12:"isConstraint";b:1;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:8:"staff_id";}}s:4:"type";s:11:"FOREIGN KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";O:41:"PhpMyAdmin\SqlParser\Components\Reference":3:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"staff";s:6:"column";N;s:4:"expr";s:7:"`staff`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:8:"staff_id";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:9:"ON UPDATE";s:6:"equals";b:0;s:4:"expr";s:7:"CASCADE";s:5:"value";s:7:"CASCADE";}}}}s:7:"options";N;}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:211;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 212, + "idx": 212, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment`", + "value": "payment", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment_id`", + "value": "payment_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "smallint", + "value": "SMALLINT", + "keyword": "SMALLINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "smallint", + "value": "SMALLINT", + "keyword": "SMALLINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tinyint", + "value": "TINYINT", + "keyword": "TINYINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`amount`", + "value": "amount", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "decimal", + "value": "DECIMAL", + "keyword": "DECIMAL", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment_date`", + "value": "payment_date", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "datetime", + "value": "datetime", + "keyword": "DATETIME", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_update`", + "value": "last_update", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "timestamp", + "value": "timestamp", + "keyword": "TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment_id`", + "value": "payment_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx_fk_staff_id`", + "value": "idx_fk_staff_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx_fk_customer_id`", + "value": "idx_fk_customer_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 489 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_rental`", + "value": "fk_payment_rental", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_customer`", + "value": "fk_payment_customer", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 586 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 587 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 598 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer`", + "value": "customer", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_rental`", + "value": "fk_payment_rental", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 677 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 690 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 714 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental`", + "value": "rental", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 736 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON DELETE", + "value": "ON DELETE", + "keyword": "ON DELETE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET NULL", + "value": "SET NULL", + "keyword": "SET NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 766 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 774 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_staff`", + "value": "fk_payment_staff", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 819 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff`", + "value": "staff", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 864 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 891 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 892 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16050", + "value": 16050, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 914 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 935 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@210" + }, + "flags": 0, + "position": 936 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "payment_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "SMALLINT", + "parameters": [ + "5" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "customer_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "SMALLINT", + "parameters": [ + "5" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "staff_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TINYINT", + "parameters": [ + "3" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "rental_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "amount", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DECIMAL", + "parameters": [ + "5", + "2" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "payment_date", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DATETIME", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "last_update", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TIMESTAMP", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "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", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": "fk_payment_customer", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "customer_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "fk_payment_rental", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "rental_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "fk_payment_staff", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "staff_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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 + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 211 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable3.out b/tests/data/parser/parseCreateTable3.out index e05e26365..af704d406 100644 --- a/tests/data/parser/parseCreateTable3.out +++ b/tests/data/parser/parseCreateTable3.out @@ -1,16 +1,903 @@ -a:4:{s:5:"query";s:139:"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 -);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:139:"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 -);";s:3:"len";i:139;s:4:"last";i:139;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:63:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:32;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:46;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:48;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:55;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"32";s:5:"value";i:32;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:56;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:58;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:59;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"c";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:65;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:67;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:71;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:73;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:74;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"mod";s:5:"value";s:3:"MOD";s:7:"keyword";s:3:"MOD";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:77;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:81;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:83;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VIRTUAL";s:5:"value";s:7:"VIRTUAL";s:7:"keyword";s:7:"VIRTUAL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:85;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:92;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"d";s:5:"value";s:1:"d";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:98;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:100;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:107;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"5";s:5:"value";i:5;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:108;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:109;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:111;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:114;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"left";s:5:"value";s:4:"LEFT";s:7:"keyword";s:4:"LEFT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:115;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:119;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:120;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:121;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"5";s:5:"value";i:5;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:122;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:123;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:124;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"PERSISTENT";s:5:"value";s:10:"PERSISTENT";s:7:"keyword";s:10:"PERSISTENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:126;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:136;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:137;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:138;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:63;s:3:"idx";i:63;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:4:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:1:"a";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:1:"b";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:2:"32";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:2;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:1:"c";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:9;a:4:{s:4:"name";s:2:"AS";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:10:"(a mod 10)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:10:"(a mod 10)";}i:10;s:7:"VIRTUAL";}}}i:3;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:1:"d";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:1:"5";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:9;a:4:{s:4:"name";s:2:"AS";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:11:"(left(b,5))";s:5:"alias";N;s:8:"function";s:4:"LEFT";s:8:"subquery";N;}s:5:"value";s:11:"(left(b,5))";}i:11;s:10:"PERSISTENT";}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:61;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 63, + "idx": 63, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "32", + "value": 32, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mod", + "value": "MOD", + "keyword": "MOD", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIRTUAL", + "value": "VIRTUAL", + "keyword": "VIRTUAL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "d", + "value": "d", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left", + "value": "LEFT", + "keyword": "LEFT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PERSISTENT", + "value": "PERSISTENT", + "keyword": "PERSISTENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@69" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "a", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "b", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "32" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "c", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "9": { + "name": "AS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "d", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "5" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "9": { + "name": "AS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(left(b,5))", + "alias": null, + "function": "LEFT", + "subquery": null + }, + "value": "(left(b,5))" + }, + "11": "PERSISTENT" + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 61 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable4.out b/tests/data/parser/parseCreateTable4.out index 0d89a3009..566728f98 100644 --- a/tests/data/parser/parseCreateTable4.out +++ b/tests/data/parser/parseCreateTable4.out @@ -1,61 +1,1922 @@ -a:4:{s:5:"query";s:408:"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 -) -);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:408:"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 -) -);";s:3:"len";i:408;s:4:"last";i:408;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:120:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ts";s:5:"value";s:2:"ts";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:16;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:19;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:22;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"purchased";s:5:"value";s:9:"purchased";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:24;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DATE";s:5:"value";s:4:"DATE";s:7:"keyword";s:4:"DATE";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:34;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"PARTITION BY";s:5:"value";s:12:"PARTITION BY";s:7:"keyword";s:12:"PARTITION BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:40;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"/* comment */";s:5:"value";s:13:"/* comment */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:53;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"RANGE";s:5:"value";s:5:"RANGE";s:7:"keyword";s:5:"RANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:67;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"YEAR";s:5:"value";s:4:"YEAR";s:7:"keyword";s:4:"YEAR";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:77;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"purchased";s:5:"value";s:9:"purchased";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:78;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:87;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"PARTITIONS";s:5:"value";s:10:"PARTITIONS";s:7:"keyword";s:10:"PARTITIONS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:90;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"3";s:5:"value";i:3;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:101;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"SUBPARTITION BY";s:5:"value";s:15:"SUBPARTITION BY";s:7:"keyword";s:15:"SUBPARTITION BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:103;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"HASH";s:5:"value";s:4:"HASH";s:7:"keyword";s:4:"HASH";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:119;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:123;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"TO_DAYS";s:5:"value";s:7:"TO_DAYS";s:7:"keyword";s:7:"TO_DAYS";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:124;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:131;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"purchased";s:5:"value";s:9:"purchased";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:132;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:141;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:142;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:143;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"SUBPARTITIONS";s:5:"value";s:13:"SUBPARTITIONS";s:7:"keyword";s:13:"SUBPARTITIONS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:144;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:157;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:158;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:159;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:160;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:161;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:170;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p0";s:5:"value";s:2:"p0";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:171;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:173;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:174;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:180;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LESS THAN";s:5:"value";s:9:"LESS THAN";s:7:"keyword";s:9:"LESS THAN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:181;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:190;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"1990";s:5:"value";i:1990;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:191;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:195;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:196;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:197;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:202;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:214;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s0";s:5:"value";s:2:"s0";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:215;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:217;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:218;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:223;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:235;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s1";s:5:"value";s:2:"s1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:236;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:238;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:239;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:240;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:241;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:242;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:251;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:252;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:254;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:255;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:261;}i:77;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LESS THAN";s:5:"value";s:9:"LESS THAN";s:7:"keyword";s:9:"LESS THAN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:262;}i:78;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:271;}i:79;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"2000";s:5:"value";i:2000;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:272;}i:80;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:276;}i:81;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:277;}i:82;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:278;}i:83;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:283;}i:84;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:295;}i:85;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s2";s:5:"value";s:2:"s2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:296;}i:86;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:298;}i:87;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:299;}i:88;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:304;}i:89;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:316;}i:90;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s3";s:5:"value";s:2:"s3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:317;}i:91;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:319;}i:92;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:320;}i:93;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:321;}i:94;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:322;}i:95;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:323;}i:96;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:332;}i:97;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p2";s:5:"value";s:2:"p2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:333;}i:98;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:335;}i:99;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:336;}i:100;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:342;}i:101;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LESS THAN";s:5:"value";s:9:"LESS THAN";s:7:"keyword";s:9:"LESS THAN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:343;}i:102;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:352;}i:103;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"MAXVALUE";s:5:"value";s:8:"MAXVALUE";s:7:"keyword";s:8:"MAXVALUE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:353;}i:104;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:361;}i:105;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:362;}i:106;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:367;}i:107;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:379;}i:108;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s4";s:5:"value";s:2:"s4";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:380;}i:109;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:382;}i:110;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:383;}i:111;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:388;}i:112;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:400;}i:113;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s5";s:5:"value";s:2:"s5";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:401;}i:114;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:403;}i:115;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:404;}i:116;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:405;}i:117;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:406;}i:118;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:407;}i:119;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:120;s:3:"idx";i:120;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"ts";s:6:"column";N;s:4:"expr";s:2:"ts";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:2:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:2:"id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:9:"purchased";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:4:"DATE";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";s:22:"RANGE(YEAR(purchased))";s:13:"partitionsNum";i:3;s:14:"subpartitionBy";s:24:"HASH(TO_DAYS(purchased))";s:16:"subpartitionsNum";i:2;s:10:"partitions";a:3:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:0;s:4:"name";s:2:"p0";s:4:"type";s:9:"LESS THAN";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:6:"(1990)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"subpartitions";a:2:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s0";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s1";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:0;s:4:"name";s:2:"p1";s:4:"type";s:9:"LESS THAN";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:6:"(2000)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"subpartitions";a:2:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s2";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s3";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:2;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:0;s:4:"name";s:2:"p2";s:4:"type";s:9:"LESS THAN";s:4:"expr";s:8:"MAXVALUE";s:13:"subpartitions";a:2:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s4";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s5";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:117;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 120, + "idx": 120, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ts", + "value": "ts", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATE", + "value": "DATE", + "keyword": "DATE", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* comment */", + "value": "/* comment */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RANGE", + "value": "RANGE", + "keyword": "RANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "YEAR", + "value": "YEAR", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITIONS", + "value": "PARTITIONS", + "keyword": "PARTITIONS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION BY", + "value": "SUBPARTITION BY", + "keyword": "SUBPARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HASH", + "value": "HASH", + "keyword": "HASH", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO_DAYS", + "value": "TO_DAYS", + "keyword": "TO_DAYS", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITIONS", + "value": "SUBPARTITIONS", + "keyword": "SUBPARTITIONS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@38" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p0", + "value": "p0", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1990", + "value": 1990, + "keyword": null, + "type": { + "@type": "@38" + }, + "flags": 0, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s0", + "value": "s0", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s1", + "value": "s1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2000", + "value": 2000, + "keyword": null, + "type": { + "@type": "@38" + }, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s2", + "value": "s2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s3", + "value": "s3", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAXVALUE", + "value": "MAXVALUE", + "keyword": "MAXVALUE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s4", + "value": "s4", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s5", + "value": "s5", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@127" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "purchased", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DATE", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": "RANGE(YEAR(purchased))", + "partitionsNum": 3, + "subpartitionBy": "HASH(TO_DAYS(purchased))", + "subpartitionsNum": 2, + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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", + "database": null, + "table": null, + "column": null, + "expr": "(1990)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "database": null, + "table": null, + "column": null, + "expr": "(2000)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 117 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable5.out b/tests/data/parser/parseCreateTable5.out index 53064d7e9..d68b0ce4e 100644 --- a/tests/data/parser/parseCreateTable5.out +++ b/tests/data/parser/parseCreateTable5.out @@ -1 +1,347 @@ -a:4:{s:5:"query";s:56:"CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:56:"CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL);";s:3:"len";i:56;s:4:"last";i:56;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:20:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"new_table";s:5:"value";s:9:"new_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`INT`";s:5:"value";s:3:"INT";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:37;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"50";s:5:"value";i:50;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:38;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:42;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:54;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:55;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:20;s:3:"idx";i:20;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"new_table";s:6:"column";N;s:4:"expr";s:9:"new_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:3:"INT";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:2:"50";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:4:"NULL";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"NULL";}}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:18;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL);", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`INT`", + "value": "INT", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "INT", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "50" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable6.out b/tests/data/parser/parseCreateTable6.out index b8e32b565..1be8a8391 100644 --- a/tests/data/parser/parseCreateTable6.out +++ b/tests/data/parser/parseCreateTable6.out @@ -1,4 +1,356 @@ -a:4:{s:5:"query";s:58:"CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL); -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:58:"CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL); -";s:3:"len";i:58;s:4:"last";i:58;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"new_table";s:5:"value";s:9:"new_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ACTION";s:5:"value";s:6:"ACTION";s:7:"keyword";s:6:"ACTION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:31;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:38;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"50";s:5:"value";i:50;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:39;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:43;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:51;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:55;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:56;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"new_table";s:6:"column";N;s:4:"expr";s:9:"new_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:6:"ACTION";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"VARCHAR";s:10:"parameters";a:1:{i:0;s:2:"50";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:4:"NULL";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"NULL";}}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:18;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL);\n", + "len": 58, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ACTION", + "value": "ACTION", + "keyword": "ACTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "ACTION", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "50" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable7.out b/tests/data/parser/parseCreateTable7.out index 58bb92370..4beda1605 100644 --- a/tests/data/parser/parseCreateTable7.out +++ b/tests/data/parser/parseCreateTable7.out @@ -1,61 +1,2506 @@ -a:4:{s:5:"query";s:518:"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 -) -); -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:518:"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 -) -); -";s:3:"len";i:518;s:4:"last";i:518;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:165:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`ts`";s:5:"value";s:2:"ts";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"int";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:35;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:43;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`purchased`";s:5:"value";s:9:"purchased";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:51;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"date";s:5:"value";s:4:"date";s:7:"keyword";s:4:"DATE";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:63;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:68;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:76;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:81;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:83;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:90;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"DEFAULT CHARSET";s:5:"value";s:15:"DEFAULT CHARSET";s:7:"keyword";s:15:"DEFAULT CHARSET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:97;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:112;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"utf8mb4";s:5:"value";s:7:"utf8mb4";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:113;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"PARTITION BY";s:5:"value";s:12:"PARTITION BY";s:7:"keyword";s:12:"PARTITION BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:121;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:133;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"RANGE";s:5:"value";s:5:"RANGE";s:7:"keyword";s:5:"RANGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:134;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:140;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"YEAR";s:5:"value";s:4:"YEAR";s:7:"keyword";s:4:"YEAR";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:141;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:145;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"purchased";s:5:"value";s:9:"purchased";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:146;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:155;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:156;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:157;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"SUBPARTITION BY";s:5:"value";s:15:"SUBPARTITION BY";s:7:"keyword";s:15:"SUBPARTITION BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:158;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:173;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"HASH";s:5:"value";s:4:"HASH";s:7:"keyword";s:4:"HASH";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:174;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:178;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:179;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"TO_DAYS";s:5:"value";s:7:"TO_DAYS";s:7:"keyword";s:7:"TO_DAYS";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:180;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:187;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"purchased";s:5:"value";s:9:"purchased";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:188;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:197;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:198;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:199;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:200;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:201;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:202;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:211;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p0";s:5:"value";s:2:"p0";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:212;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:214;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:215;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:221;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LESS THAN";s:5:"value";s:9:"LESS THAN";s:7:"keyword";s:9:"LESS THAN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:222;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:231;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:232;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"1990";s:5:"value";i:1990;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:233;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:237;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:238;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:240;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:241;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:242;}i:77;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:254;}i:78;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s0";s:5:"value";s:2:"s0";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:255;}i:79;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:257;}i:80;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:258;}i:81;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:264;}i:82;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:265;}i:83;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:271;}i:84;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:272;}i:85;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:273;}i:86;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:285;}i:87;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s1";s:5:"value";s:2:"s1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:286;}i:88;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:288;}i:89;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:289;}i:90;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:295;}i:91;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:296;}i:92;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:302;}i:93;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:303;}i:94;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:304;}i:95;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:305;}i:96;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:306;}i:97;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:315;}i:98;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:316;}i:99;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:318;}i:100;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:319;}i:101;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:325;}i:102;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LESS THAN";s:5:"value";s:9:"LESS THAN";s:7:"keyword";s:9:"LESS THAN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:326;}i:103;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:335;}i:104;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:336;}i:105;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"2000";s:5:"value";i:2000;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:337;}i:106;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:341;}i:107;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:342;}i:108;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:344;}i:109;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:345;}i:110;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:346;}i:111;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:358;}i:112;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s2";s:5:"value";s:2:"s2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:359;}i:113;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:361;}i:114;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:362;}i:115;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:368;}i:116;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:369;}i:117;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:375;}i:118;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:376;}i:119;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:377;}i:120;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:389;}i:121;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s3";s:5:"value";s:2:"s3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:390;}i:122;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:392;}i:123;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:393;}i:124;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:399;}i:125;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:400;}i:126;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:406;}i:127;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:407;}i:128;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:408;}i:129;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:409;}i:130;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:410;}i:131;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:419;}i:132;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p2";s:5:"value";s:2:"p2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:420;}i:133;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:422;}i:134;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:423;}i:135;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:429;}i:136;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LESS THAN";s:5:"value";s:9:"LESS THAN";s:7:"keyword";s:9:"LESS THAN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:430;}i:137;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:439;}i:138;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"MAXVALUE";s:5:"value";s:8:"MAXVALUE";s:7:"keyword";s:8:"MAXVALUE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:440;}i:139;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:448;}i:140;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:450;}i:141;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:451;}i:142;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:452;}i:143;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:464;}i:144;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s4";s:5:"value";s:2:"s4";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:465;}i:145;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:467;}i:146;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:468;}i:147;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:474;}i:148;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:475;}i:149;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:481;}i:150;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:482;}i:151;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SUBPARTITION";s:5:"value";s:12:"SUBPARTITION";s:7:"keyword";s:12:"SUBPARTITION";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:483;}i:152;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:495;}i:153;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"s5";s:5:"value";s:2:"s5";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:496;}i:154;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:498;}i:155;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:499;}i:156;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:505;}i:157;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:506;}i:158;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:512;}i:159;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:513;}i:160;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:514;}i:161;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:515;}i:162;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:516;}i:163;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:517;}i:164;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:165;s:3:"idx";i:165;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"ts";s:6:"column";N;s:4:"expr";s:4:"`ts`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}i:4;a:4:{s:4:"name";s:15:"DEFAULT CHARSET";s:6:"equals";b:1;s:4:"expr";s:7:"utf8mb4";s:5:"value";s:7:"utf8mb4";}}}s:6:"fields";a:2:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:2:"id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:1:{i:0;s:2:"11";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:4:"NULL";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"NULL";}}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:9:"purchased";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:4:"DATE";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:4:"NULL";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"NULL";}}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";s:23:"RANGE (YEAR(purchased))";s:13:"partitionsNum";N;s:14:"subpartitionBy";s:25:"HASH (TO_DAYS(purchased))";s:16:"subpartitionsNum";N;s:10:"partitions";a:3:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:0;s:4:"name";s:2:"p0";s:4:"type";s:9:"LESS THAN";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:6:"(1990)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"subpartitions";a:2:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s0";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s1";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:0;s:4:"name";s:2:"p1";s:4:"type";s:9:"LESS THAN";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:6:"(2000)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"subpartitions";a:2:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s2";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s3";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}i:2;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:0;s:4:"name";s:2:"p2";s:4:"type";s:9:"LESS THAN";s:4:"expr";s:8:"MAXVALUE";s:13:"subpartitions";a:2:{i:0;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s4";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}}i:1;O:51:"PhpMyAdmin\SqlParser\Components\PartitionDefinition":6:{s:14:"isSubpartition";b:1;s:4:"name";s:2:"s5";s:4:"type";N;s:4:"expr";N;s:13:"subpartitions";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:161;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 165, + "idx": 165, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`ts`", + "value": "ts", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`purchased`", + "value": "purchased", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "date", + "value": "date", + "keyword": "DATE", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RANGE", + "value": "RANGE", + "keyword": "RANGE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "YEAR", + "value": "YEAR", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION BY", + "value": "SUBPARTITION BY", + "keyword": "SUBPARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HASH", + "value": "HASH", + "keyword": "HASH", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO_DAYS", + "value": "TO_DAYS", + "keyword": "TO_DAYS", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p0", + "value": "p0", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1990", + "value": 1990, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s0", + "value": "s0", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s1", + "value": "s1", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2000", + "value": 2000, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s2", + "value": "s2", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s3", + "value": "s3", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 430 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAXVALUE", + "value": "MAXVALUE", + "keyword": "MAXVALUE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s4", + "value": "s4", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s5", + "value": "s5", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@171" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "purchased", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DATE", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": "RANGE (YEAR(purchased))", + "partitionsNum": null, + "subpartitionBy": "HASH (TO_DAYS(purchased))", + "subpartitionsNum": null, + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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", + "database": null, + "table": null, + "column": null, + "expr": "(1990)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "database": null, + "table": null, + "column": null, + "expr": "(2000)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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", + "partitionOptions": { + "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": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 161 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable8.in b/tests/data/parser/parseCreateTable8.in new file mode 100644 index 000000000..318f73a9b --- /dev/null +++ b/tests/data/parser/parseCreateTable8.in @@ -0,0 +1,4 @@ +CREATE TABLE `test1` ( + `amultipoint` multipoint DEFAULT NULL, + `amultipolygon` multipolygon DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable8.out b/tests/data/parser/parseCreateTable8.out new file mode 100644 index 000000000..477ef6eb0 --- /dev/null +++ b/tests/data/parser/parseCreateTable8.out @@ -0,0 +1,558 @@ +{ + "query": "CREATE TABLE `test1` (\n `amultipoint` multipoint DEFAULT NULL,\n `amultipolygon` multipolygon DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `test1` (\n `amultipoint` multipoint DEFAULT NULL,\n `amultipolygon` multipolygon DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", + "len": 145, + "last": 145, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 35, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test1`", + "value": "test1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`amultipoint`", + "value": "amultipoint", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "multipoint", + "value": "multipoint", + "keyword": "MULTIPOINT", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`amultipolygon`", + "value": "amultipolygon", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "multipolygon", + "value": "multipolygon", + "keyword": "MULTIPOLYGON", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@36" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test1", + "column": null, + "expr": "`test1`", + "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", + "name": "amultipoint", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "MULTIPOINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "amultipolygon", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "MULTIPOLYGON", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 34 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable9.in b/tests/data/parser/parseCreateTable9.in new file mode 100644 index 000000000..0ac22c8c3 --- /dev/null +++ b/tests/data/parser/parseCreateTable9.in @@ -0,0 +1,100 @@ +CREATE TABLE `trips` ( + `id` bigint(20) UNSIGNED NOT NULL COMMENT 'Unique trip Id', + `trip_code` int(11) UNSIGNED NOT NULL COMMENT 'Trip code', + `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category', + `trip_date` date NOT NULL COMMENT 'The trip date' +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips' PARTITION BY LIST(trip_category) SUBPARTITION BY HASH(DAY(trip_date)) SUBPARTITIONS 31 ( + PARTITION p1 + VALUES + IN(1), + PARTITION p2 + VALUES + IN(2), + PARTITION p3 + VALUES + IN(3), + PARTITION p4 + VALUES + IN(4), + PARTITION p5 + VALUES + IN(5), + PARTITION p6 + VALUES + IN(6), + PARTITION p7 + VALUES + IN(7), + PARTITION p8 + VALUES + IN(8), + PARTITION p9 + VALUES + IN(9), + PARTITION p10 + VALUES + IN(10), + PARTITION p11 + VALUES + IN(11), + PARTITION p12 + VALUES + IN(12), + PARTITION p13 + VALUES + IN(13), + PARTITION p14 + VALUES + IN(14), + PARTITION p15 + VALUES + IN(15), + PARTITION p16 + VALUES + IN(16), + PARTITION p17 + VALUES + IN(17), + PARTITION p18 + VALUES + IN(18), + PARTITION p19 + VALUES + IN(19), + PARTITION p20 + VALUES + IN(20), + PARTITION p21 + VALUES + IN(21), + PARTITION p22 + VALUES + IN(22), + PARTITION p23 + VALUES + IN(23), + PARTITION p24 + VALUES + IN(24), + PARTITION p25 + VALUES + IN(25), + PARTITION p26 + VALUES + IN(26), + PARTITION p27 + VALUES + IN(27), + PARTITION p28 + VALUES + IN(28), + PARTITION p29 + VALUES + IN(29), + PARTITION p30 + VALUES + IN(30), + PARTITION p31 + VALUES + IN(31) +); \ No newline at end of file diff --git a/tests/data/parser/parseCreateTable9.out b/tests/data/parser/parseCreateTable9.out new file mode 100644 index 000000000..03759e612 --- /dev/null +++ b/tests/data/parser/parseCreateTable9.out @@ -0,0 +1,7452 @@ +{ + "query": "CREATE TABLE `trips` (\n `id` bigint(20) UNSIGNED NOT NULL COMMENT 'Unique trip Id',\n `trip_code` int(11) UNSIGNED NOT NULL COMMENT 'Trip code',\n `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category',\n `trip_date` date NOT NULL COMMENT 'The trip date'\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips' PARTITION BY LIST(trip_category) SUBPARTITION BY HASH(DAY(trip_date)) SUBPARTITIONS 31 (\n PARTITION p1\n VALUES\n IN(1),\n PARTITION p2\n VALUES\n IN(2),\n PARTITION p3\n VALUES\n IN(3),\n PARTITION p4\n VALUES\n IN(4),\n PARTITION p5\n VALUES\n IN(5),\n PARTITION p6\n VALUES\n IN(6),\n PARTITION p7\n VALUES\n IN(7),\n PARTITION p8\n VALUES\n IN(8),\n PARTITION p9\n VALUES\n IN(9),\n PARTITION p10\n VALUES\n IN(10),\n PARTITION p11\n VALUES\n IN(11),\n PARTITION p12\n VALUES\n IN(12),\n PARTITION p13\n VALUES\n IN(13),\n PARTITION p14\n VALUES\n IN(14),\n PARTITION p15\n VALUES\n IN(15),\n PARTITION p16\n VALUES\n IN(16),\n PARTITION p17\n VALUES\n IN(17),\n PARTITION p18\n VALUES\n IN(18),\n PARTITION p19\n VALUES\n IN(19),\n PARTITION p20\n VALUES\n IN(20),\n PARTITION p21\n VALUES\n IN(21),\n PARTITION p22\n VALUES\n IN(22),\n PARTITION p23\n VALUES\n IN(23),\n PARTITION p24\n VALUES\n IN(24),\n PARTITION p25\n VALUES\n IN(25),\n PARTITION p26\n VALUES\n IN(26),\n PARTITION p27\n VALUES\n IN(27),\n PARTITION p28\n VALUES\n IN(28),\n PARTITION p29\n VALUES\n IN(29),\n PARTITION p30\n VALUES\n IN(30),\n PARTITION p31\n VALUES\n IN(31)\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `trips` (\n `id` bigint(20) UNSIGNED NOT NULL COMMENT 'Unique trip Id',\n `trip_code` int(11) UNSIGNED NOT NULL COMMENT 'Trip code',\n `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category',\n `trip_date` date NOT NULL COMMENT 'The trip date'\n) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips' PARTITION BY LIST(trip_category) SUBPARTITION BY HASH(DAY(trip_date)) SUBPARTITIONS 31 (\n PARTITION p1\n VALUES\n IN(1),\n PARTITION p2\n VALUES\n IN(2),\n PARTITION p3\n VALUES\n IN(3),\n PARTITION p4\n VALUES\n IN(4),\n PARTITION p5\n VALUES\n IN(5),\n PARTITION p6\n VALUES\n IN(6),\n PARTITION p7\n VALUES\n IN(7),\n PARTITION p8\n VALUES\n IN(8),\n PARTITION p9\n VALUES\n IN(9),\n PARTITION p10\n VALUES\n IN(10),\n PARTITION p11\n VALUES\n IN(11),\n PARTITION p12\n VALUES\n IN(12),\n PARTITION p13\n VALUES\n IN(13),\n PARTITION p14\n VALUES\n IN(14),\n PARTITION p15\n VALUES\n IN(15),\n PARTITION p16\n VALUES\n IN(16),\n PARTITION p17\n VALUES\n IN(17),\n PARTITION p18\n VALUES\n IN(18),\n PARTITION p19\n VALUES\n IN(19),\n PARTITION p20\n VALUES\n IN(20),\n PARTITION p21\n VALUES\n IN(21),\n PARTITION p22\n VALUES\n IN(22),\n PARTITION p23\n VALUES\n IN(23),\n PARTITION p24\n VALUES\n IN(24),\n PARTITION p25\n VALUES\n IN(25),\n PARTITION p26\n VALUES\n IN(26),\n PARTITION p27\n VALUES\n IN(27),\n PARTITION p28\n VALUES\n IN(28),\n PARTITION p29\n VALUES\n IN(29),\n PARTITION p30\n VALUES\n IN(30),\n PARTITION p31\n VALUES\n IN(31)\n);", + "len": 1957, + "last": 1957, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 489, + "idx": 489, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trips`", + "value": "trips", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Unique trip Id'", + "value": "Unique trip Id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_code`", + "value": "trip_code", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Trip code'", + "value": "Trip code", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_category`", + "value": "trip_category", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Trip category'", + "value": "Trip category", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`trip_date`", + "value": "trip_date", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "date", + "value": "date", + "keyword": "DATE", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'The trip date'", + "value": "The trip date", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_unicode_ci", + "value": "utf8mb4_unicode_ci", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'The trips'", + "value": "The trips", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIST", + "value": "LIST", + "keyword": "LIST", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trip_category", + "value": "trip_category", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION BY", + "value": "SUBPARTITION BY", + "keyword": "SUBPARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HASH", + "value": "HASH", + "keyword": "HASH", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAY", + "value": "DAY", + "keyword": "DAY", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trip_date", + "value": "trip_date", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITIONS", + "value": "SUBPARTITIONS", + "keyword": "SUBPARTITIONS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "31", + "value": 31, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 520 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 544 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p3", + "value": "p3", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 574 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 594 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 595 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 613 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p4", + "value": "p4", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 614 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 616 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 621 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 642 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p5", + "value": "p5", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 688 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p6", + "value": "p6", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "6", + "value": 6, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 734 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 735 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 736 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p7", + "value": "p7", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "7", + "value": 7, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 780 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 801 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p8", + "value": "p8", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 804 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 809 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 815 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 824 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 826 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 839 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 848 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p9", + "value": "p9", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 849 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 871 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 873 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "9", + "value": 9, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 876 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 886 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p10", + "value": "p10", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 910 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 921 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 925 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 926 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 935 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 944 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p11", + "value": "p11", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 945 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 959 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 970 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 973 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 984 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p12", + "value": "p12", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1002 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1008 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "12", + "value": 12, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1024 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p13", + "value": "p13", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "13", + "value": 13, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1071 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1073 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1082 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1091 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p14", + "value": "p14", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1092 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "14", + "value": 14, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p15", + "value": "p15", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "15", + "value": 15, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p16", + "value": "p16", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p17", + "value": "p17", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "17", + "value": 17, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p18", + "value": "p18", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "18", + "value": 18, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p19", + "value": "p19", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "19", + "value": 19, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p20", + "value": "p20", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p21", + "value": "p21", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "21", + "value": 21, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p22", + "value": "p22", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1484 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "22", + "value": 22, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p23", + "value": "p23", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1556 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "23", + "value": 23, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1561 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p24", + "value": "p24", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1585 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1590 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "24", + "value": 24, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1621 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p25", + "value": "p25", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1631 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1634 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1645 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1654 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1670 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p26", + "value": "p26", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1688 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1694 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "26", + "value": 26, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1728 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p27", + "value": "p27", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1729 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "27", + "value": 27, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1759 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p28", + "value": "p28", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1786 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1801 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "28", + "value": 28, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1804 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1826 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p29", + "value": "p29", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1835 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1841 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "29", + "value": 29, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1855 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1857 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p30", + "value": "p30", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1876 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1890 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "30", + "value": 30, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1905 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1906 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p31", + "value": "p31", + "keyword": null, + "type": { + "@type": "@81" + }, + "flags": 0, + "position": 1925 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1939 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "31", + "value": 31, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 1951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1954 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 1955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 1956 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@497" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "trips", + "column": null, + "expr": "`trips`", + "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" + }, + "6": { + "name": "COLLATE", + "equals": true, + "expr": "utf8mb4_unicode_ci", + "value": "utf8mb4_unicode_ci" + }, + "7": { + "name": "COMMENT", + "equals": true, + "expr": "'The trips'", + "value": "The trips" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "BIGINT", + "parameters": [ + "20" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Unique trip Id'", + "value": "Unique trip Id" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_code", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Trip code'", + "value": "Trip code" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_category", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Trip category'", + "value": "Trip category" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "trip_date", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DATE", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'The trip date'", + "value": "The trip date" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": "LIST(trip_category)", + "partitionsNum": null, + "subpartitionBy": "HASH(DAY(trip_date))", + "subpartitionsNum": 31, + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(1)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(2)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p3", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(3)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p4", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(4)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p5", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(5)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p6", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(6)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p7", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(7)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p8", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(8)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p9", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(9)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p10", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(10)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p11", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(11)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p12", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(12)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p13", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(13)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p14", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(14)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p15", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(15)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p16", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(16)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p17", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(17)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p18", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(18)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p19", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(19)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p20", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(20)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p21", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(21)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p22", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(22)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p23", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(23)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p24", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(24)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p25", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(25)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p26", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(26)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p27", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(27)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p28", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(28)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p29", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(29)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p30", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(30)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "partitionOptions": { + "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": "p31", + "type": "IN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(31)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 486 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableAsSelect.out b/tests/data/parser/parseCreateTableAsSelect.out index 458db0929..be15e17fc 100644 --- a/tests/data/parser/parseCreateTableAsSelect.out +++ b/tests/data/parser/parseCreateTableAsSelect.out @@ -1,4 +1,312 @@ -a:4:{s:5:"query";s:47:"CREATE TABLE new_tbl AS SELECT * FROM orig_tbl -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:47:"CREATE TABLE new_tbl AS SELECT * FROM orig_tbl -";s:3:"len";i:47;s:4:"last";i:47;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:17:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"new_tbl";s:5:"value";s:7:"new_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"orig_tbl";s:5:"value";s:8:"orig_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:17;s:3:"idx";i:17;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"new_tbl";s:6:"column";N;s:4:"expr";s:7:"new_tbl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"orig_tbl";s:6:"column";N;s:4:"expr";s:8:"orig_tbl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:8;s:4:"last";i:15;}s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:15;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE TABLE new_tbl AS SELECT * FROM orig_tbl\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE new_tbl AS SELECT * FROM orig_tbl\n", + "len": 47, + "last": 47, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_tbl", + "value": "new_tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orig_tbl", + "value": "orig_tbl", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "new_tbl", + "column": null, + "expr": "new_tbl", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "orig_tbl", + "column": null, + "expr": "orig_tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableEnforcedCheck.in b/tests/data/parser/parseCreateTableEnforcedCheck.in new file mode 100644 index 000000000..de990757a --- /dev/null +++ b/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/tests/data/parser/parseCreateTableEnforcedCheck.out b/tests/data/parser/parseCreateTableEnforcedCheck.out new file mode 100644 index 000000000..862b27915 --- /dev/null +++ b/tests/data/parser/parseCreateTableEnforcedCheck.out @@ -0,0 +1,547 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 38, + "idx": 38, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employees_check", + "value": "employees_check", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "30", + "value": 30, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'^T'", + "value": "^T", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'r$'", + "value": "r$", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENFORCED", + "value": "ENFORCED", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "FirstName", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "30" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "12": { + "name": "CHECK", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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" + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableErr1.out b/tests/data/parser/parseCreateTableErr1.out index 4d5871cd9..323c8a230 100644 --- a/tests/data/parser/parseCreateTableErr1.out +++ b/tests/data/parser/parseCreateTableErr1.out @@ -1,7 +1,354 @@ -a:4:{s:5:"query";s:68:"CREATE TABLE IF NOT EXISTS users ( - `id` UNKNOWN -) ENGINE=InnoDB;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:68:"CREATE TABLE IF NOT EXISTS users ( - `id` UNKNOWN -) ENGINE=InnoDB;";s:3:"len";i:68;s:4:"last";i:68;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"IF NOT EXISTS";s:5:"value";s:13:"IF NOT EXISTS";s:7:"keyword";s:13:"IF NOT EXISTS";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:39;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"UNKNOWN";s:5:"value";s:7:"UNKNOWN";s:7:"keyword";s:7:"UNKNOWN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:52;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:54;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:60;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:61;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:67;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}s:6:"fields";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:2:"id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:7:"UNKNOWN";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:6;s:5:"TABLE";i:7;s:13:"IF NOT EXISTS";}}s:5:"first";i:0;s:4:"last";i:19;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:23:"Unrecognized data type.";i:1;r:93;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "CREATE TABLE IF NOT EXISTS users (\n `id` UNKNOWN\n) ENGINE=InnoDB;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE IF NOT EXISTS users (\n `id` UNKNOWN\n) ENGINE=InnoDB;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNKNOWN", + "value": "UNKNOWN", + "keyword": "UNKNOWN", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "UNKNOWN", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized data type.", + { + "@type": "@19" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableErr2.out b/tests/data/parser/parseCreateTableErr2.out index 7e7c7c0ed..1e8b7b912 100644 --- a/tests/data/parser/parseCreateTableErr2.out +++ b/tests/data/parser/parseCreateTableErr2.out @@ -1 +1,129 @@ -a:4:{s:5:"query";s:12:"CREATE TABLE";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:12:"CREATE TABLE";s:3:"len";i:12;s:4:"last";i:12;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:4:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:4;s:3:"idx";i:4;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";N;s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:0:{}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:36:"The name of the entity was expected.";i:1;r:30;i:2;i:0;}i:1;a:3:{i:0;s:44:"At least one column definition was expected.";i:1;r:23;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "CREATE TABLE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": null, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The name of the entity was expected.", + { + "@type": "@7" + }, + 0 + ], + [ + "At least one column definition was expected.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableErr3.out b/tests/data/parser/parseCreateTableErr3.out index 8ddf80b57..b06ded16e 100644 --- a/tests/data/parser/parseCreateTableErr3.out +++ b/tests/data/parser/parseCreateTableErr3.out @@ -1 +1,196 @@ -a:4:{s:5:"query";s:32:"CREATE TABLE `table_copy` LIKE ;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:32:"CREATE TABLE `table_copy` LIKE ;";s:3:"len";i:32;s:4:"last";i:32;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`table_copy`";s:5:"value";s:10:"table_copy";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LIKE";s:5:"value";s:4:"LIKE";s:7:"keyword";s:4:"LIKE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:31;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"table_copy";s:6:"column";N;s:4:"expr";s:12:"`table_copy`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:26:"A table name was expected.";i:1;r:65;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "CREATE TABLE `table_copy` LIKE ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `table_copy` LIKE ;", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table_copy`", + "value": "table_copy", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_copy", + "column": null, + "expr": "`table_copy`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A table name was expected.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableErr4.out b/tests/data/parser/parseCreateTableErr4.out index c918f56d8..a00c7f649 100644 --- a/tests/data/parser/parseCreateTableErr4.out +++ b/tests/data/parser/parseCreateTableErr4.out @@ -1 +1,334 @@ -a:4:{s:5:"query";s:54:"CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:54:"CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL);";s:3:"len";i:54;s:4:"last";i:54;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:20:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"new_table";s:5:"value";s:9:"new_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:35;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"50";s:5:"value";i:50;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:40;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:52;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:53;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:20;s:3:"idx";i:20;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"new_table";s:6:"column";N;s:4:"expr";s:9:"new_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:0:{}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:99:"A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.";i:1;r:58;i:2;i:0;}i:1;a:3:{i:0;s:44:"At least one column definition was expected.";i:1;r:58;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:86;i:2;i:0;}i:3;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL);", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "new_table", + "column": null, + "expr": "new_table", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.", + { + "@type": "@13" + }, + 0 + ], + [ + "At least one column definition was expected.", + { + "@type": "@13" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@17" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@21" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableErr5.out b/tests/data/parser/parseCreateTableErr5.out index 825c65b42..c45015df2 100644 --- a/tests/data/parser/parseCreateTableErr5.out +++ b/tests/data/parser/parseCreateTableErr5.out @@ -1,4 +1,345 @@ -a:4:{s:5:"query";s:55:"CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL); -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:55:"CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL); -";s:3:"len";i:55;s:4:"last";i:55;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"new_table";s:5:"value";s:9:"new_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"666";s:5:"value";i:666;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"VARCHAR";s:5:"value";s:7:"VARCHAR";s:7:"keyword";s:7:"VARCHAR";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:35;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"50";s:5:"value";i:50;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:40;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:52;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:53;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"new_table";s:6:"column";N;s:4:"expr";s:9:"new_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:6:"fields";a:0:{}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:27:"A symbol name was expected!";i:1;r:58;i:2;i:0;}i:1;a:3:{i:0;s:44:"At least one column definition was expected.";i:1;r:58;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:86;i:2;i:0;}i:3;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL);\n", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "666", + "value": 666, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "new_table", + "column": null, + "expr": "new_table", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A symbol name was expected!", + { + "@type": "@13" + }, + 0 + ], + [ + "At least one column definition was expected.", + { + "@type": "@13" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@18" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@21" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableLike.out b/tests/data/parser/parseCreateTableLike.out index 0606ce777..98695360f 100644 --- a/tests/data/parser/parseCreateTableLike.out +++ b/tests/data/parser/parseCreateTableLike.out @@ -1 +1,208 @@ -a:4:{s:5:"query";s:43:"CREATE TABLE `table_copy` LIKE `old_table`;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:43:"CREATE TABLE `table_copy` LIKE `old_table`;";s:3:"len";i:43;s:4:"last";i:43;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`table_copy`";s:5:"value";s:10:"table_copy";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LIKE";s:5:"value";s:4:"LIKE";s:7:"keyword";s:4:"LIKE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`old_table`";s:5:"value";s:9:"old_table";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:31;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:42;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"table_copy";s:6:"column";N;s:4:"expr";s:12:"`table_copy`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";N;s:4:"like";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"old_table";s:6:"column";N;s:4:"expr";s:11:"`old_table`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE TABLE `table_copy` LIKE `old_table`;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `table_copy` LIKE `old_table`;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table_copy`", + "value": "table_copy", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`old_table`", + "value": "old_table", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_copy", + "column": null, + "expr": "`table_copy`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": null, + "like": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableNotEnforcedCheck.in b/tests/data/parser/parseCreateTableNotEnforcedCheck.in new file mode 100644 index 000000000..1eb24bafe --- /dev/null +++ b/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/tests/data/parser/parseCreateTableNotEnforcedCheck.out b/tests/data/parser/parseCreateTableNotEnforcedCheck.out new file mode 100644 index 000000000..460a94d44 --- /dev/null +++ b/tests/data/parser/parseCreateTableNotEnforcedCheck.out @@ -0,0 +1,570 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 40, + "idx": 40, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employees_check", + "value": "employees_check", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "30", + "value": 30, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'^T'", + "value": "^T", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'r$'", + "value": "r$", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENFORCED", + "value": "ENFORCED", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@47" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "FirstName", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "30" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "12": { + "name": "CHECK", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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" + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 38 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableSRID.in b/tests/data/parser/parseCreateTableSRID.in new file mode 100644 index 000000000..1fbcbf9d4 --- /dev/null +++ b/tests/data/parser/parseCreateTableSRID.in @@ -0,0 +1,7 @@ +CREATE TABLE IF NOT EXISTS `public_areas` ( + `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + `kind` enum('COUNTRY','REGION','DEPARTMENT','MUNICIPALITY') NOT NULL, + `area` geometry NOT NULL SRID 4326, + `properties` json NOT NULL, + `title` varchar(100) NOT NULL +); \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableSRID.out b/tests/data/parser/parseCreateTableSRID.out new file mode 100644 index 000000000..db5b8b4a3 --- /dev/null +++ b/tests/data/parser/parseCreateTableSRID.out @@ -0,0 +1,980 @@ +{ + "query": "CREATE TABLE IF NOT EXISTS `public_areas` (\n `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,\n `kind` enum('COUNTRY','REGION','DEPARTMENT','MUNICIPALITY') NOT NULL,\n `area` geometry NOT NULL SRID 4326,\n `properties` json NOT NULL,\n `title` varchar(100) NOT NULL\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE IF NOT EXISTS `public_areas` (\n `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,\n `kind` enum('COUNTRY','REGION','DEPARTMENT','MUNICIPALITY') NOT NULL,\n `area` geometry NOT NULL SRID 4326,\n `properties` json NOT NULL,\n `title` varchar(100) NOT NULL\n);", + "len": 275, + "last": 275, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 69, + "idx": 69, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`public_areas`", + "value": "public_areas", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`kind`", + "value": "kind", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "enum", + "value": "enum", + "keyword": "ENUM", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'COUNTRY'", + "value": "COUNTRY", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'REGION'", + "value": "REGION", + "keyword": null, + "type": { + "@type": "@34" + }, + "flags": 1, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'DEPARTMENT'", + "value": "DEPARTMENT", + "keyword": null, + "type": { + "@type": "@34" + }, + "flags": 1, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'MUNICIPALITY'", + "value": "MUNICIPALITY", + "keyword": null, + "type": { + "@type": "@34" + }, + "flags": 1, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`area`", + "value": "area", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "geometry", + "value": "geometry", + "keyword": "GEOMETRY", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SRID", + "value": "SRID", + "keyword": "SRID", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4326", + "value": 4326, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`properties`", + "value": "properties", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "json", + "value": "json", + "keyword": "JSON", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`title`", + "value": "title", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "100", + "value": 100, + "keyword": null, + "type": { + "@type": "@55" + }, + "flags": 0, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@76" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "public_areas", + "column": null, + "expr": "`public_areas`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "4": "PRIMARY KEY", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "kind", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "ENUM", + "parameters": [ + "'COUNTRY'", + "'REGION'", + "'DEPARTMENT'", + "'MUNICIPALITY'" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "area", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "GEOMETRY", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "17": { + "name": "SRID", + "equals": false, + "expr": "4326", + "value": "4326" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "properties", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "JSON", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "title", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "100" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 67 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableSelect.out b/tests/data/parser/parseCreateTableSelect.out index a4b43b2bb..29b3d159e 100644 --- a/tests/data/parser/parseCreateTableSelect.out +++ b/tests/data/parser/parseCreateTableSelect.out @@ -1,4 +1,290 @@ -a:4:{s:5:"query";s:44:"CREATE TABLE new_tbl SELECT * FROM orig_tbl -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:44:"CREATE TABLE new_tbl SELECT * FROM orig_tbl -";s:3:"len";i:44;s:4:"last";i:44;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"new_tbl";s:5:"value";s:7:"new_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:28;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"orig_tbl";s:5:"value";s:8:"orig_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:35;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"new_tbl";s:6:"column";N;s:4:"expr";s:7:"new_tbl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"orig_tbl";s:6:"column";N;s:4:"expr";s:8:"orig_tbl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:6;s:4:"last";i:13;}s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE TABLE new_tbl SELECT * FROM orig_tbl\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE new_tbl SELECT * FROM orig_tbl\n", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_tbl", + "value": "new_tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orig_tbl", + "value": "orig_tbl", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "new_tbl", + "column": null, + "expr": "new_tbl", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "orig_tbl", + "column": null, + "expr": "orig_tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableSpatial.out b/tests/data/parser/parseCreateTableSpatial.out index 5925501c3..244ac7db1 100644 --- a/tests/data/parser/parseCreateTableSpatial.out +++ b/tests/data/parser/parseCreateTableSpatial.out @@ -1 +1,391 @@ -a:4:{s:5:"query";s:64:"CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:64:"CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB;";s:3:"len";i:64;s:4:"last";i:64;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:25:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`xss`";s:5:"value";s:3:"xss";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`gis`";s:5:"value";s:3:"gis";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`x`";s:5:"value";s:1:"x";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"POINT";s:5:"value";s:5:"POINT";s:7:"keyword";s:5:"POINT";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:37;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:46;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:48;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:57;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:63;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:25;s:3:"idx";i:25;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:3:"xss";s:5:"table";s:3:"gis";s:6:"column";N;s:4:"expr";s:11:"`xss`.`gis`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}}}s:6:"fields";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:1:"x";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:5:"POINT";s:10:"parameters";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:23;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB;", + "len": 64, + "last": 64, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`xss`", + "value": "xss", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`gis`", + "value": "gis", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`x`", + "value": "x", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "POINT", + "value": "POINT", + "keyword": "POINT", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "x", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "POINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableTimestampWithPrecision.out b/tests/data/parser/parseCreateTableTimestampWithPrecision.out index 076289316..7f6971d4a 100644 --- a/tests/data/parser/parseCreateTableTimestampWithPrecision.out +++ b/tests/data/parser/parseCreateTableTimestampWithPrecision.out @@ -1,13 +1,822 @@ -a:4:{s:5:"query";s:203:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:203:"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;";s:3:"len";i:203;s:4:"last";i:203;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:56:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`aa`";s:5:"value";s:2:"aa";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"int";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"11";s:5:"value";i:11;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:35;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:43;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`rTime`";s:5:"value";s:5:"rTime";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"timestamp";s:5:"value";s:9:"timestamp";s:7:"keyword";s:9:"TIMESTAMP";s:4:"type";i:1;s:5:"flags";i:41;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:64;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"3";s:5:"value";i:3;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:65;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:66;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"NOT NULL";s:5:"value";s:8:"NOT NULL";s:7:"keyword";s:8:"NOT NULL";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:68;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:77;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:25:"'0000-00-00 00:00:00.000'";s:5:"value";s:23:"0000-00-00 00:00:00.000";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:85;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ON UPDATE";s:5:"value";s:9:"ON UPDATE";s:7:"keyword";s:9:"ON UPDATE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:111;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"CURRENT_TIMESTAMP";s:5:"value";s:17:"CURRENT_TIMESTAMP";s:7:"keyword";s:17:"CURRENT_TIMESTAMP";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:121;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:138;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"3";s:5:"value";i:3;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:139;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:140;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:141;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"PRIMARY KEY";s:5:"value";s:11:"PRIMARY KEY";s:7:"keyword";s:11:"PRIMARY KEY";s:4:"type";i:1;s:5:"flags";i:23;s:8:"position";i:145;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:156;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:157;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:158;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:162;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:163;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:164;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:165;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"ENGINE";s:5:"value";s:6:"ENGINE";s:7:"keyword";s:6:"ENGINE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:166;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:172;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:173;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:179;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"DEFAULT CHARSET";s:5:"value";s:15:"DEFAULT CHARSET";s:7:"keyword";s:15:"DEFAULT CHARSET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:180;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:195;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"latin1";s:5:"value";s:6:"latin1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:196;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:202;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:56;s:3:"idx";i:56;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"aa";s:6:"column";N;s:4:"expr";s:4:"`aa`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;a:4:{s:4:"name";s:6:"ENGINE";s:6:"equals";b:1;s:4:"expr";s:6:"InnoDB";s:5:"value";s:6:"InnoDB";}i:4;a:4:{s:4:"name";s:15:"DEFAULT CHARSET";s:6:"equals";b:1;s:4:"expr";s:6:"latin1";s:5:"value";s:6:"latin1";}}}s:6:"fields";a:3:{i:0;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:2:"id";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:3:"INT";s:10:"parameters";a:1:{i:0;s:2:"11";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"NOT NULL";}}}i:1;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";s:5:"rTime";s:12:"isConstraint";N;s:4:"type";O:40:"PhpMyAdmin\SqlParser\Components\DataType":3:{s:4:"name";s:9:"TIMESTAMP";s:10:"parameters";a:1:{i:0;s:1:"3";}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:3:"key";N;s:10:"references";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:3:{i:1;s:8:"NOT NULL";i:2;a:4:{s:4:"name";s:7:"DEFAULT";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:23:"0000-00-00 00:00:00.000";s:4:"expr";s:25:"'0000-00-00 00:00:00.000'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:25:"'0000-00-00 00:00:00.000'";}i:7;a:4:{s:4:"name";s:9:"ON UPDATE";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:20:"CURRENT_TIMESTAMP(3)";s:5:"alias";N;s:8:"function";s:17:"CURRENT_TIMESTAMP";s:8:"subquery";N;}s:5:"value";s:20:"CURRENT_TIMESTAMP(3)";}}}}i:2;O:48:"PhpMyAdmin\SqlParser\Components\CreateDefinition":6:{s:4:"name";N;s:12:"isConstraint";N;s:4:"type";N;s:3:"key";O:35:"PhpMyAdmin\SqlParser\Components\Key":4:{s:4:"name";N;s:7:"columns";a:1:{i:0;a:1:{s:4:"name";s:2:"id";}}s:4:"type";s:11:"PRIMARY KEY";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}}s:10:"references";N;s:7:"options";N;}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:5:"TABLE";}}s:5:"first";i:0;s:4:"last";i:54;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 56, + "idx": 56, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`aa`", + "value": "aa", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rTime`", + "value": "rTime", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "timestamp", + "value": "timestamp", + "keyword": "TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "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": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "latin1", + "value": "latin1", + "keyword": null, + "type": { + "@type": "@58" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@64" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "rTime", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TIMESTAMP", + "parameters": [ + "3" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "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", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "id" + } + ], + "type": "PRIMARY KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 54 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableWithInvisibleKey.in b/tests/data/parser/parseCreateTableWithInvisibleKey.in new file mode 100644 index 000000000..da363fc29 --- /dev/null +++ b/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/tests/data/parser/parseCreateTableWithInvisibleKey.out b/tests/data/parser/parseCreateTableWithInvisibleKey.out new file mode 100644 index 000000000..af57c0b95 --- /dev/null +++ b/tests/data/parser/parseCreateTableWithInvisibleKey.out @@ -0,0 +1,2134 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 153, + "idx": 153, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments`", + "value": "animes_comments", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_comment_id`", + "value": "anime_comment_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_text`", + "value": "comment_text", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "500", + "value": 500, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_general_ci", + "value": "utf8mb4_general_ci", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_at`", + "value": "comment_at", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "datetime", + "value": "datetime", + "keyword": "DATETIME", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_comment_id`", + "value": "anime_comment_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_animes_fk`", + "value": "animes_comments_animes_fk", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "invisible", + "value": "invisible", + "keyword": null, + "type": { + "@type": "@54" + }, + "flags": 0, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_users_fk`", + "value": "animes_comments_users_fk", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_at_idx`", + "value": "comment_at_idx", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_at`", + "value": "comment_at", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_animes_fk`", + "value": "animes_comments_animes_fk", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes`", + "value": "animes", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON DELETE", + "value": "ON DELETE", + "keyword": "ON DELETE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 587 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTRICT", + "value": "RESTRICT", + "keyword": "RESTRICT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 597 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_users_fk`", + "value": "animes_comments_users_fk", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`users`", + "value": "users", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON DELETE", + "value": "ON DELETE", + "keyword": "ON DELETE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 693 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTRICT", + "value": "RESTRICT", + "keyword": "RESTRICT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 729 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "anime_comment_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "BIGINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "anime_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "BIGINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "user_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "BIGINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "comment_text", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "500" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "COLLATE", + "equals": false, + "expr": "utf8mb4_general_ci", + "value": "utf8mb4_general_ci" + } + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "comment_at", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "DATETIME", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "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", + "name": "animes_comments_animes_fk", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "anime_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "animes_comments_users_fk", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "user_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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 + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 152 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTableWithParser.in b/tests/data/parser/parseCreateTableWithParser.in new file mode 100644 index 000000000..90d27dd69 --- /dev/null +++ b/tests/data/parser/parseCreateTableWithParser.in @@ -0,0 +1,5 @@ +CREATE TABLE `mytable` ( + `column_one` VARCHAR(255) DEFAULT NULL, + FULLTEXT KEY `fulltext_index` (`column_one`) /*!50100 WITH PARSER `ngram` */, + CONSTRAINT `my_constraint_1` FOREIGN KEY (`column_one`) REFERENCES `other_table` (`column_two`) ON DELETE RESTRICT ON UPDATE RESTRICT +) diff --git a/tests/data/parser/parseCreateTableWithParser.out b/tests/data/parser/parseCreateTableWithParser.out new file mode 100644 index 000000000..c4ffce103 --- /dev/null +++ b/tests/data/parser/parseCreateTableWithParser.out @@ -0,0 +1,938 @@ +{ + "query": "CREATE TABLE `mytable` (\n `column_one` VARCHAR(255) DEFAULT NULL,\n FULLTEXT KEY `fulltext_index` (`column_one`) /*!50100 WITH PARSER `ngram` */,\n CONSTRAINT `my_constraint_1` FOREIGN KEY (`column_one`) REFERENCES `other_table` (`column_two`) ON DELETE RESTRICT ON UPDATE RESTRICT\n)\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE TABLE `mytable` (\n `column_one` VARCHAR(255) DEFAULT NULL,\n FULLTEXT KEY `fulltext_index` (`column_one`) /*!50100 WITH PARSER `ngram` */,\n CONSTRAINT `my_constraint_1` FOREIGN KEY (`column_one`) REFERENCES `other_table` (`column_two`) ON DELETE RESTRICT ON UPDATE RESTRICT\n)\n", + "len": 285, + "last": 285, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 66, + "idx": 66, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mytable`", + "value": "mytable", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`column_one`", + "value": "column_one", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FULLTEXT KEY", + "value": "FULLTEXT KEY", + "keyword": "FULLTEXT KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fulltext_index`", + "value": "fulltext_index", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`column_one`", + "value": "column_one", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!50100", + "value": "/*!50100", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 10, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH PARSER", + "value": "WITH PARSER", + "keyword": "WITH PARSER", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`ngram`", + "value": "ngram", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@36" + }, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`my_constraint_1`", + "value": "my_constraint_1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": { + "@type": "@3" + }, + "flags": 23, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`column_one`", + "value": "column_one", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`other_table`", + "value": "other_table", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`column_two`", + "value": "column_two", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON DELETE", + "value": "ON DELETE", + "keyword": "ON DELETE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTRICT", + "value": "RESTRICT", + "keyword": "RESTRICT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTRICT", + "value": "RESTRICT", + "keyword": "RESTRICT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "column_one", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": "fulltext_index", + "columns": [ + { + "name": "column_one" + } + ], + "type": "FULLTEXT KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "WITH PARSER", + "equals": false, + "expr": "`ngram`", + "value": "ngram" + } + } + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "my_constraint_1", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "name": null, + "columns": [ + { + "name": "column_one" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "other_table", + "column": null, + "expr": "`other_table`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "column_two" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "ON DELETE", + "equals": false, + "expr": "RESTRICT", + "value": "RESTRICT" + }, + "3": { + "name": "ON UPDATE", + "equals": false, + "expr": "RESTRICT", + "value": "RESTRICT" + } + } + } + }, + "options": null + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 65 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateTrigger.out b/tests/data/parser/parseCreateTrigger.out index 6390ce809..67d2ae6b8 100644 --- a/tests/data/parser/parseCreateTrigger.out +++ b/tests/data/parser/parseCreateTrigger.out @@ -1,4 +1,523 @@ -a:4:{s:5:"query";s:99:"CREATE TRIGGER ins_sum BEFORE INSERT ON account -FOR EACH ROW BEGIN SET @sum = @sum + NEW.amount END";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:99:"CREATE TRIGGER ins_sum BEFORE INSERT ON account -FOR EACH ROW BEGIN SET @sum = @sum + NEW.amount END";s:3:"len";i:99;s:4:"last";i:99;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:34:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"TRIGGER";s:5:"value";s:7:"TRIGGER";s:7:"keyword";s:7:"TRIGGER";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"ins_sum";s:5:"value";s:7:"ins_sum";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:15;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BEFORE";s:5:"value";s:6:"BEFORE";s:7:"keyword";s:6:"BEFORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:30;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:37;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"account";s:5:"value";s:7:"account";s:7:"keyword";s:7:"ACCOUNT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:40;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"FOR EACH ROW";s:5:"value";s:12:"FOR EACH ROW";s:7:"keyword";s:12:"FOR EACH ROW";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:48;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"BEGIN";s:5:"value";s:5:"BEGIN";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:61;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:67;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@sum";s:5:"value";s:3:"sum";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:76;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@sum";s:5:"value";s:3:"sum";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:78;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:83;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"NEW";s:5:"value";s:3:"NEW";s:7:"keyword";s:3:"NEW";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:85;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"amount";s:5:"value";s:6:"amount";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:89;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:96;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:34;s:3:"idx";i:35;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"ins_sum";s:6:"column";N;s:4:"expr";s:7:"ins_sum";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:6:"BEFORE";i:2;s:6:"INSERT";}}s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"account";s:6:"column";N;s:4:"expr";s:7:"account";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:6:"return";N;s:10:"parameters";N;s:4:"body";a:18:{i:0;r:121;i:1;r:128;i:2;r:135;i:3;r:142;i:4;r:149;i:5;r:156;i:6;r:163;i:7;r:170;i:8;r:177;i:9;r:184;i:10;r:191;i:11;r:198;i:12;r:205;i:13;r:212;i:14;r:219;i:15;r:226;i:16;r:233;i:17;r:240;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:7:"TRIGGER";}}s:5:"first";i:0;s:4:"last";i:34;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE TRIGGER ins_sum BEFORE INSERT ON account\nFOR EACH ROW BEGIN SET @sum = @sum + NEW.amount END", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TRIGGER", + "value": "TRIGGER", + "keyword": "TRIGGER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ins_sum", + "value": "ins_sum", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEFORE", + "value": "BEFORE", + "keyword": "BEFORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "account", + "value": "account", + "keyword": "ACCOUNT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR EACH ROW", + "value": "FOR EACH ROW", + "keyword": "FOR EACH ROW", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@sum", + "value": "sum", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@sum", + "value": "sum", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 1, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NEW", + "value": "NEW", + "keyword": "NEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "amount", + "value": "amount", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "account", + "column": null, + "expr": "account", + "alias": null, + "function": null, + "subquery": null + }, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TRIGGER" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateUser.out b/tests/data/parser/parseCreateUser.out deleted file mode 100644 index d1fb54135..000000000 --- a/tests/data/parser/parseCreateUser.out +++ /dev/null @@ -1 +0,0 @@ -a:4:{s:5:"query";s:16:"CREATE USER test";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:16:"CREATE USER test";s:3:"len";i:16;s:4:"last";i:16;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:6:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"USER";s:5:"value";s:4:"USER";s:7:"keyword";s:4:"USER";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:6;s:3:"idx";i:6;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:0:{}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:4:"USER";}}s:5:"first";i:0;s:4:"last";i:5;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file diff --git a/tests/data/parser/parseCreateUser.in b/tests/data/parser/parseCreateUser1.in similarity index 100% rename from tests/data/parser/parseCreateUser.in rename to tests/data/parser/parseCreateUser1.in diff --git a/tests/data/parser/parseCreateUser1.out b/tests/data/parser/parseCreateUser1.out new file mode 100644 index 000000000..226ce2482 --- /dev/null +++ b/tests/data/parser/parseCreateUser1.out @@ -0,0 +1,144 @@ +{ + "query": "CREATE USER test", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE USER test", + "len": 16, + "last": 16, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "USER" + } + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateUser2.in b/tests/data/parser/parseCreateUser2.in new file mode 100644 index 000000000..07bfca5dd --- /dev/null +++ b/tests/data/parser/parseCreateUser2.in @@ -0,0 +1,4 @@ +CREATE USER 'bob'@'localhost' + IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u') + OR unix_socket; + diff --git a/tests/data/parser/parseCreateUser2.out b/tests/data/parser/parseCreateUser2.out new file mode 100644 index 000000000..819620bb2 --- /dev/null +++ b/tests/data/parser/parseCreateUser2.out @@ -0,0 +1,408 @@ +{ + "query": "CREATE USER 'bob'@'localhost' \n IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u') \n OR unix_socket;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE USER 'bob'@'localhost' \n IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u') \n OR unix_socket;\n\n", + "len": 141, + "last": 141, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'bob'@'localhost'", + "value": "bob@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED", + "value": "IDENTIFIED", + "keyword": "IDENTIFIED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIA", + "value": "VIA", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql_native_password", + "value": "mysql_native_password", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u'", + "value": "vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OR", + "value": "OR", + "keyword": "OR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unix_socket", + "value": "unix_socket", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "bob@localhost", + "column": null, + "expr": "'bob'@'localhost'", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": 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": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "USER" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateView.out b/tests/data/parser/parseCreateView.out index 40f2abfa9..eb3f1b89f 100644 --- a/tests/data/parser/parseCreateView.out +++ b/tests/data/parser/parseCreateView.out @@ -1 +1,3373 @@ -a:4:{s:5:"query";s:960:"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`";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:960:"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`";s:3:"len";i:960;s:4:"last";i:960;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:286:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ALGORITHM";s:5:"value";s:9:"ALGORITHM";s:7:"keyword";s:9:"ALGORITHM";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"UNDEFINED";s:5:"value";s:9:"UNDEFINED";s:7:"keyword";s:9:"UNDEFINED";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFINER";s:5:"value";s:7:"DEFINER";s:7:"keyword";s:7:"DEFINER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:34;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"`root`@`localhost`";s:5:"value";s:14:"root@localhost";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:4;s:8:"position";i:35;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SQL SECURITY";s:5:"value";s:12:"SQL SECURITY";s:7:"keyword";s:12:"SQL SECURITY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:54;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"INVOKER";s:5:"value";s:7:"INVOKER";s:7:"keyword";s:7:"INVOKER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:67;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"VIEW";s:5:"value";s:4:"VIEW";s:7:"keyword";s:4:"VIEW";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:75;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:80;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`actor_info`";s:5:"value";s:10:"actor_info";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:89;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:102;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:104;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:105;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:112;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:115;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:116;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:126;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:127;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:130;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:140;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:141;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:144;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`first_name`";s:5:"value";s:10:"first_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:145;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:157;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:158;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:160;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`first_name`";s:5:"value";s:10:"first_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:161;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:173;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:174;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:177;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`last_name`";s:5:"value";s:9:"last_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:178;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:189;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:190;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:192;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`last_name`";s:5:"value";s:9:"last_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:193;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:204;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"group_concat";s:5:"value";s:12:"group_concat";s:7:"keyword";s:12:"GROUP_CONCAT";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:205;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:217;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"distinct";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:218;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:226;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"concat";s:5:"value";s:6:"concat";s:7:"keyword";s:6:"CONCAT";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:227;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:233;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`c`";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:234;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:237;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`name`";s:5:"value";s:4:"name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:238;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:244;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"': '";s:5:"value";s:2:": ";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:245;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:249;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:250;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:251;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:257;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"group_concat";s:5:"value";s:12:"group_concat";s:7:"keyword";s:12:"GROUP_CONCAT";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:258;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:270;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`f`";s:5:"value";s:1:"f";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:271;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:274;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`title`";s:5:"value";s:5:"title";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:275;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:282;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"order by";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:283;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:291;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`f`";s:5:"value";s:1:"f";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:292;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:295;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`title`";s:5:"value";s:5:"title";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:296;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:303;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:304;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:307;}i:77;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"separator";s:5:"value";s:9:"SEPARATOR";s:7:"keyword";s:9:"SEPARATOR";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:308;}i:78;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:317;}i:79;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"', '";s:5:"value";s:2:", ";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:318;}i:80;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:322;}i:81;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:323;}i:82;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"from";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:324;}i:83;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:328;}i:84;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:329;}i:85;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:330;}i:86;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:331;}i:87;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:339;}i:88;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`film`";s:5:"value";s:4:"film";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:340;}i:89;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:346;}i:90;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`f`";s:5:"value";s:1:"f";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:347;}i:91;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:350;}i:92;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"join";s:5:"value";s:4:"JOIN";s:7:"keyword";s:4:"JOIN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:351;}i:93;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:355;}i:94;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:356;}i:95;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:364;}i:96;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`film_category`";s:5:"value";s:13:"film_category";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:365;}i:97;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:380;}i:98;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fc`";s:5:"value";s:2:"fc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:381;}i:99;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:385;}i:100;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"on";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:386;}i:101;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:388;}i:102;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:389;}i:103;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`f`";s:5:"value";s:1:"f";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:390;}i:104;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:393;}i:105;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`film_id`";s:5:"value";s:7:"film_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:394;}i:106;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:403;}i:107;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:404;}i:108;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:405;}i:109;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fc`";s:5:"value";s:2:"fc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:406;}i:110;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:410;}i:111;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`film_id`";s:5:"value";s:7:"film_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:411;}i:112;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:420;}i:113;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:421;}i:114;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:422;}i:115;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:423;}i:116;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"join";s:5:"value";s:4:"JOIN";s:7:"keyword";s:4:"JOIN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:424;}i:117;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:428;}i:118;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:429;}i:119;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:437;}i:120;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`film_actor`";s:5:"value";s:10:"film_actor";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:438;}i:121;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:450;}i:122;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fa`";s:5:"value";s:2:"fa";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:451;}i:123;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:455;}i:124;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"on";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:456;}i:125;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:458;}i:126;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:459;}i:127;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`f`";s:5:"value";s:1:"f";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:460;}i:128;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:463;}i:129;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`film_id`";s:5:"value";s:7:"film_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:464;}i:130;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:473;}i:131;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:474;}i:132;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:475;}i:133;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fa`";s:5:"value";s:2:"fa";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:476;}i:134;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:480;}i:135;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`film_id`";s:5:"value";s:7:"film_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:481;}i:136;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:490;}i:137;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:491;}i:138;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:492;}i:139;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:493;}i:140;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"where";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:494;}i:141;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:499;}i:142;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:500;}i:143;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:501;}i:144;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fc`";s:5:"value";s:2:"fc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:502;}i:145;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:506;}i:146;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`category_id`";s:5:"value";s:11:"category_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:507;}i:147;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:520;}i:148;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:521;}i:149;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:522;}i:150;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`c`";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:523;}i:151;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:526;}i:152;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`category_id`";s:5:"value";s:11:"category_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:527;}i:153;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:540;}i:154;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:541;}i:155;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"and";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:542;}i:156;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:545;}i:157;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:546;}i:158;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fa`";s:5:"value";s:2:"fa";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:547;}i:159;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:551;}i:160;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:552;}i:161;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:562;}i:162;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:563;}i:163;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:564;}i:164;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:565;}i:165;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:568;}i:166;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:569;}i:167;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:579;}i:168;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:580;}i:169;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:581;}i:170;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:582;}i:171;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:583;}i:172;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"order by";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:584;}i:173;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:592;}i:174;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`c`";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:593;}i:175;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:596;}i:176;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`name`";s:5:"value";s:4:"name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:597;}i:177;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:603;}i:178;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:604;}i:179;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:607;}i:180;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"separator";s:5:"value";s:9:"SEPARATOR";s:7:"keyword";s:9:"SEPARATOR";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:608;}i:181;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:617;}i:182;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'; '";s:5:"value";s:2:"; ";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:618;}i:183;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:622;}i:184;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:623;}i:185;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:624;}i:186;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:626;}i:187;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`film_info`";s:5:"value";s:9:"film_info";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:627;}i:188;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:638;}i:189;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"from";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:639;}i:190;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:643;}i:191;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:644;}i:192;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:645;}i:193;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:646;}i:194;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:647;}i:195;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:655;}i:196;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`actor`";s:5:"value";s:5:"actor";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:656;}i:197;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:663;}i:198;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:664;}i:199;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:667;}i:200;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"left join";s:5:"value";s:9:"LEFT JOIN";s:7:"keyword";s:9:"LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:668;}i:201;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:677;}i:202;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:678;}i:203;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:686;}i:204;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`film_actor`";s:5:"value";s:10:"film_actor";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:687;}i:205;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:699;}i:206;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fa`";s:5:"value";s:2:"fa";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:700;}i:207;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:704;}i:208;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"on";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:705;}i:209;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:707;}i:210;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:708;}i:211;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:709;}i:212;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:712;}i:213;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:713;}i:214;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:723;}i:215;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:724;}i:216;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:725;}i:217;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fa`";s:5:"value";s:2:"fa";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:726;}i:218;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:730;}i:219;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:731;}i:220;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:741;}i:221;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:742;}i:222;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:743;}i:223;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:744;}i:224;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"left join";s:5:"value";s:9:"LEFT JOIN";s:7:"keyword";s:9:"LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:745;}i:225;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:754;}i:226;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:755;}i:227;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:763;}i:228;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`film_category`";s:5:"value";s:13:"film_category";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:764;}i:229;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:779;}i:230;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fc`";s:5:"value";s:2:"fc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:780;}i:231;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:784;}i:232;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"on";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:785;}i:233;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:787;}i:234;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:788;}i:235;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fa`";s:5:"value";s:2:"fa";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:789;}i:236;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:793;}i:237;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`film_id`";s:5:"value";s:7:"film_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:794;}i:238;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:803;}i:239;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:804;}i:240;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:805;}i:241;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fc`";s:5:"value";s:2:"fc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:806;}i:242;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:810;}i:243;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"`film_id`";s:5:"value";s:7:"film_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:811;}i:244;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:820;}i:245;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:821;}i:246;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:822;}i:247;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:823;}i:248;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"left join";s:5:"value";s:9:"LEFT JOIN";s:7:"keyword";s:9:"LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:824;}i:249;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:833;}i:250;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`sakila`";s:5:"value";s:6:"sakila";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:834;}i:251;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:842;}i:252;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`category`";s:5:"value";s:8:"category";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:843;}i:253;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:853;}i:254;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`c`";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:854;}i:255;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:857;}i:256;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"on";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:858;}i:257;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:860;}i:258;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:861;}i:259;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`fc`";s:5:"value";s:2:"fc";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:862;}i:260;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:866;}i:261;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`category_id`";s:5:"value";s:11:"category_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:867;}i:262;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:880;}i:263;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:881;}i:264;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:882;}i:265;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`c`";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:883;}i:266;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:886;}i:267;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`category_id`";s:5:"value";s:11:"category_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:887;}i:268;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:900;}i:269;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:901;}i:270;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:902;}i:271;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:903;}i:272;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"group by";s:5:"value";s:8:"GROUP BY";s:7:"keyword";s:8:"GROUP BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:904;}i:273;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:912;}i:274;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:913;}i:275;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:916;}i:276;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`actor_id`";s:5:"value";s:8:"actor_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:917;}i:277;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:927;}i:278;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:928;}i:279;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:931;}i:280;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`first_name`";s:5:"value";s:10:"first_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:932;}i:281;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:944;}i:282;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:945;}i:283;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:948;}i:284;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`last_name`";s:5:"value";s:9:"last_name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:949;}i:285;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:286;s:3:"idx";i:286;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:6:"sakila";s:5:"table";s:10:"actor_info";s:6:"column";N;s:4:"expr";s:21:"`sakila`.`actor_info`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:264:{i:0;r:156;i:1;r:163;i:2;r:170;i:3;r:177;i:4;r:184;i:5;r:191;i:6;r:198;i:7;r:205;i:8;r:212;i:9;r:219;i:10;r:226;i:11;r:233;i:12;r:240;i:13;r:247;i:14;r:254;i:15;r:261;i:16;r:268;i:17;r:275;i:18;r:282;i:19;r:289;i:20;r:296;i:21;r:303;i:22;r:310;i:23;r:317;i:24;r:324;i:25;r:331;i:26;r:338;i:27;r:345;i:28;r:352;i:29;r:359;i:30;r:366;i:31;r:373;i:32;r:380;i:33;r:387;i:34;r:394;i:35;r:401;i:36;r:408;i:37;r:415;i:38;r:422;i:39;r:429;i:40;r:436;i:41;r:443;i:42;r:450;i:43;r:457;i:44;r:464;i:45;r:471;i:46;r:478;i:47;r:485;i:48;r:492;i:49;r:499;i:50;r:506;i:51;r:513;i:52;r:520;i:53;r:527;i:54;r:534;i:55;r:541;i:56;r:548;i:57;r:555;i:58;r:562;i:59;r:569;i:60;r:576;i:61;r:583;i:62;r:590;i:63;r:597;i:64;r:604;i:65;r:611;i:66;r:618;i:67;r:625;i:68;r:632;i:69;r:639;i:70;r:646;i:71;r:653;i:72;r:660;i:73;r:667;i:74;r:674;i:75;r:681;i:76;r:688;i:77;r:695;i:78;r:702;i:79;r:709;i:80;r:716;i:81;r:723;i:82;r:730;i:83;r:737;i:84;r:744;i:85;r:751;i:86;r:758;i:87;r:765;i:88;r:772;i:89;r:779;i:90;r:786;i:91;r:793;i:92;r:800;i:93;r:807;i:94;r:814;i:95;r:821;i:96;r:828;i:97;r:835;i:98;r:842;i:99;r:849;i:100;r:856;i:101;r:863;i:102;r:870;i:103;r:877;i:104;r:884;i:105;r:891;i:106;r:898;i:107;r:905;i:108;r:912;i:109;r:919;i:110;r:926;i:111;r:933;i:112;r:940;i:113;r:947;i:114;r:954;i:115;r:961;i:116;r:968;i:117;r:975;i:118;r:982;i:119;r:989;i:120;r:996;i:121;r:1003;i:122;r:1010;i:123;r:1017;i:124;r:1024;i:125;r:1031;i:126;r:1038;i:127;r:1045;i:128;r:1052;i:129;r:1059;i:130;r:1066;i:131;r:1073;i:132;r:1080;i:133;r:1087;i:134;r:1094;i:135;r:1101;i:136;r:1108;i:137;r:1115;i:138;r:1122;i:139;r:1129;i:140;r:1136;i:141;r:1143;i:142;r:1150;i:143;r:1157;i:144;r:1164;i:145;r:1171;i:146;r:1178;i:147;r:1185;i:148;r:1192;i:149;r:1199;i:150;r:1206;i:151;r:1213;i:152;r:1220;i:153;r:1227;i:154;r:1234;i:155;r:1241;i:156;r:1248;i:157;r:1255;i:158;r:1262;i:159;r:1269;i:160;r:1276;i:161;r:1283;i:162;r:1290;i:163;r:1297;i:164;r:1304;i:165;r:1311;i:166;r:1318;i:167;r:1325;i:168;r:1332;i:169;r:1339;i:170;r:1346;i:171;r:1353;i:172;r:1360;i:173;r:1367;i:174;r:1374;i:175;r:1381;i:176;r:1388;i:177;r:1395;i:178;r:1402;i:179;r:1409;i:180;r:1416;i:181;r:1423;i:182;r:1430;i:183;r:1437;i:184;r:1444;i:185;r:1451;i:186;r:1458;i:187;r:1465;i:188;r:1472;i:189;r:1479;i:190;r:1486;i:191;r:1493;i:192;r:1500;i:193;r:1507;i:194;r:1514;i:195;r:1521;i:196;r:1528;i:197;r:1535;i:198;r:1542;i:199;r:1549;i:200;r:1556;i:201;r:1563;i:202;r:1570;i:203;r:1577;i:204;r:1584;i:205;r:1591;i:206;r:1598;i:207;r:1605;i:208;r:1612;i:209;r:1619;i:210;r:1626;i:211;r:1633;i:212;r:1640;i:213;r:1647;i:214;r:1654;i:215;r:1661;i:216;r:1668;i:217;r:1675;i:218;r:1682;i:219;r:1689;i:220;r:1696;i:221;r:1703;i:222;r:1710;i:223;r:1717;i:224;r:1724;i:225;r:1731;i:226;r:1738;i:227;r:1745;i:228;r:1752;i:229;r:1759;i:230;r:1766;i:231;r:1773;i:232;r:1780;i:233;r:1787;i:234;r:1794;i:235;r:1801;i:236;r:1808;i:237;r:1815;i:238;r:1822;i:239;r:1829;i:240;r:1836;i:241;r:1843;i:242;r:1850;i:243;r:1857;i:244;r:1864;i:245;r:1871;i:246;r:1878;i:247;r:1885;i:248;r:1892;i:249;r:1899;i:250;r:1906;i:251;r:1913;i:252;r:1920;i:253;r:1927;i:254;r:1934;i:255;r:1941;i:256;r:1948;i:257;r:1955;i:258;r:1962;i:259;r:1969;i:260;r:1976;i:261;r:1983;i:262;r:1990;i:263;r:1997;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:4:{i:3;a:4:{s:4:"name";s:9:"ALGORITHM";s:6:"equals";b:1;s:4:"expr";s:9:"UNDEFINED";s:5:"value";s:9:"UNDEFINED";}i:4;a:4:{s:4:"name";s:7:"DEFINER";s:6:"equals";b:1;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:14:"root@localhost";s:4:"expr";s:18:"`root`@`localhost`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:18:"`root`@`localhost`";}i:5;a:4:{s:4:"name";s:12:"SQL SECURITY";s:6:"equals";b:0;s:4:"expr";s:7:"INVOKER";s:5:"value";s:7:"INVOKER";}i:6;s:4:"VIEW";}}s:5:"first";i:0;s:4:"last";i:285;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 286, + "idx": 286, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNDEFINED", + "value": "UNDEFINED", + "keyword": "UNDEFINED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`localhost`", + "value": "root@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_info`", + "value": "actor_info", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`first_name`", + "value": "first_name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`first_name`", + "value": "first_name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "group_concat", + "value": "group_concat", + "keyword": "GROUP_CONCAT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "distinct", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "concat", + "value": "concat", + "keyword": "CONCAT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "': '", + "value": ": ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "group_concat", + "value": "group_concat", + "keyword": "GROUP_CONCAT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`title`", + "value": "title", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "order by", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`title`", + "value": "title", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "separator", + "value": "SEPARATOR", + "keyword": "SEPARATOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "', '", + "value": ", ", + "keyword": null, + "type": { + "@type": "@65" + }, + "flags": 1, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film`", + "value": "film", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "join", + "value": "JOIN", + "keyword": "JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_category`", + "value": "film_category", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "join", + "value": "JOIN", + "keyword": "JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_actor`", + "value": "film_actor", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 520 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "order by", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 597 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "separator", + "value": "SEPARATOR", + "keyword": "SEPARATOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'; '", + "value": "; ", + "keyword": null, + "type": { + "@type": "@65" + }, + "flags": 1, + "position": 618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 622 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 623 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_info`", + "value": "film_info", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 645 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 677 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_actor`", + "value": "film_actor", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 700 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 712 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 741 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_category`", + "value": "film_category", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 780 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 785 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 793 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 804 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 824 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 834 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category`", + "value": "category", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 854 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 857 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 886 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "group by", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`first_name`", + "value": "first_name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 932 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 944 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 945 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "sakila", + "table": "actor_info", + "column": null, + "expr": "`sakila`.`actor_info`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": "actor_id", + "expr": "`a`.`actor_id`", + "alias": "actor_id", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": "first_name", + "expr": "`a`.`first_name`", + "alias": "first_name", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": "last_name", + "expr": "`a`.`last_name`", + "alias": "last_name", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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 + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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", + "database": null, + "table": "a", + "column": "last_name", + "expr": "`a`.`last_name`", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": [], + "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", + "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 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateView2.out b/tests/data/parser/parseCreateView2.out index 6557d8984..cfa38a3d4 100644 --- a/tests/data/parser/parseCreateView2.out +++ b/tests/data/parser/parseCreateView2.out @@ -1,4 +1,535 @@ -a:4:{s:5:"query";s:89:"CREATE VIEW myView (vid, vfirstname) AS -SELECT id, first_name FROM employee WHERE id = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:89:"CREATE VIEW myView (vid, vfirstname) AS -SELECT id, first_name FROM employee WHERE id = 1;";s:3:"len";i:89;s:4:"last";i:89;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:35:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"VIEW";s:5:"value";s:4:"VIEW";s:7:"keyword";s:4:"VIEW";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"myView";s:5:"value";s:6:"myView";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"vid";s:5:"value";s:3:"vid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"vfirstname";s:5:"value";s:10:"vfirstname";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:35;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:49;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"first_name";s:5:"value";s:10:"first_name";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:62;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:67;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:76;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:82;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:85;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:88;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:35;s:3:"idx";i:35;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"myView";s:6:"column";N;s:4:"expr";s:6:"myView";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:3:"vid";i:1;s:10:"vfirstname";}s:6:"values";a:2:{i:0;s:3:"vid";i:1;s:10:"vfirstname";}}s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:19:{i:0;r:107;i:1;r:114;i:2;r:121;i:3;r:128;i:4;r:135;i:5;r:142;i:6;r:149;i:7;r:156;i:8;r:163;i:9;r:170;i:10;r:177;i:11;r:184;i:12;r:191;i:13;r:198;i:14;r:205;i:15;r:212;i:16;r:219;i:17;r:226;i:18;r:233;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:6;s:4:"VIEW";}}s:5:"first";i:0;s:4:"last";i:33;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "CREATE VIEW myView (vid, vfirstname) AS\nSELECT id, first_name FROM employee WHERE id = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 35, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "myView", + "value": "myView", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vid", + "value": "vid", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vfirstname", + "value": "vfirstname", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "first_name", + "value": "first_name", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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" + ] + }, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@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" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateView3.in b/tests/data/parser/parseCreateView3.in new file mode 100644 index 000000000..5de3a133c --- /dev/null +++ b/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/tests/data/parser/parseCreateView3.out b/tests/data/parser/parseCreateView3.out new file mode 100644 index 000000000..8bb11a229 --- /dev/null +++ b/tests/data/parser/parseCreateView3.out @@ -0,0 +1,552 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GoodStudent", + "value": "GoodStudent", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`two spaces`", + "value": "two spaces", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Une table espace`", + "value": "Une table espace", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.0", + "value": 3.0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 2, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTION", + "value": "OPTION", + "keyword": "OPTION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "GoodStudent", + "column": null, + "expr": "GoodStudent", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "one space", + "expr": "`one space`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "two spaces", + "expr": "`two spaces`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Une table espace", + "column": null, + "expr": "`Une table espace`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "one space" + ], + "isOperator": false, + "expr": "`one space` > 3.0", + "leftOperand": "`one space`", + "operator": ">", + "rightOperand": "3.0" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@35" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateView4.in b/tests/data/parser/parseCreateView4.in new file mode 100644 index 000000000..dfa6fbfb9 --- /dev/null +++ b/tests/data/parser/parseCreateView4.in @@ -0,0 +1 @@ +CREATE VIEW v (mycol) AS SELECT 'abc'; diff --git a/tests/data/parser/parseCreateView4.out b/tests/data/parser/parseCreateView4.out new file mode 100644 index 000000000..0e220ff3c --- /dev/null +++ b/tests/data/parser/parseCreateView4.out @@ -0,0 +1,301 @@ +{ + "query": "CREATE VIEW v (mycol) AS SELECT 'abc';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE VIEW v (mycol) AS SELECT 'abc';\n", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "v", + "value": "v", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mycol", + "value": "mycol", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'abc'", + "value": "abc", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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" + ] + }, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateView5.in b/tests/data/parser/parseCreateView5.in new file mode 100644 index 000000000..5aa2b1bb9 --- /dev/null +++ b/tests/data/parser/parseCreateView5.in @@ -0,0 +1 @@ +CREATE VIEW `t3` as SELECT `t1` IS NOT NULL AS `is_not_null` FROM `test3`; diff --git a/tests/data/parser/parseCreateView5.out b/tests/data/parser/parseCreateView5.out new file mode 100644 index 000000000..d1c44d23a --- /dev/null +++ b/tests/data/parser/parseCreateView5.out @@ -0,0 +1,409 @@ +{ + "query": "CREATE VIEW `t3` as SELECT `t1` IS NOT NULL AS `is_not_null` FROM `test3`;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE VIEW `t3` as SELECT `t1` IS NOT NULL AS `is_not_null` FROM `test3`;\n", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 26, + "idx": 26, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t3`", + "value": "t3", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`is_not_null`", + "value": "is_not_null", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test3`", + "value": "test3", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t3", + "column": null, + "expr": "`t3`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t1", + "expr": "`t1` IS NOT NULL", + "alias": "is_not_null", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test3", + "column": null, + "expr": "`test3`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 8, + "last": 22 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateViewAsWithAs.in b/tests/data/parser/parseCreateViewAsWithAs.in new file mode 100644 index 000000000..9b9830365 --- /dev/null +++ b/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/tests/data/parser/parseCreateViewAsWithAs.out b/tests/data/parser/parseCreateViewAsWithAs.out new file mode 100644 index 000000000..fe3fda816 --- /dev/null +++ b/tests/data/parser/parseCreateViewAsWithAs.out @@ -0,0 +1,2793 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 150, + "idx": 150, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- create first view", + "value": "-- create first view", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "withclause", + "value": "withclause", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "shape", + "value": "shape", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": { + "@type": "@7" + }, + "flags": 7, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- create second view", + "value": "-- create second view", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 4, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "withclause2", + "value": "withclause2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "shape", + "value": "shape", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte2", + "value": "cte2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "n2", + "value": "n2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "shape", + "value": "shape", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sh2", + "value": "sh2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte2", + "value": "cte2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 354 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte2", + "value": "cte2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": { + "@type": "@7" + }, + "flags": 7, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@60" + }, + "flags": 0, + "position": 387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@60" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "withclause", + "column": null, + "expr": "withclause", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@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" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "name", + "expr": "p.name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "shape", + "expr": "p.shape", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "gis_all", + "column": null, + "expr": "gis_all", + "alias": "p", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 111, + "idx": 111, + "tokens": [ + { + "@type": "@46" + }, + { + "@type": "@47" + }, + { + "@type": "@48" + }, + { + "@type": "@49" + }, + { + "@type": "@50" + }, + { + "@type": "@51" + }, + { + "@type": "@52" + }, + { + "@type": "@53" + }, + { + "@type": "@54" + }, + { + "@type": "@55" + }, + { + "@type": "@56" + }, + { + "@type": "@57" + }, + { + "@type": "@58" + }, + { + "@type": "@59" + }, + { + "@type": "@61" + }, + { + "@type": "@62" + }, + { + "@type": "@63" + }, + { + "@type": "@64" + }, + { + "@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" + }, + { + "@type": "@150" + }, + { + "@type": "@151" + }, + { + "@type": "@152" + }, + { + "@type": "@153" + }, + { + "@type": "@154" + }, + { + "@type": "@155" + }, + { + "@type": "@156" + }, + { + "@type": "@157" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "CROSS", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "gis_all", + "column": null, + "expr": "gis_all", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "withclause2", + "column": null, + "expr": "withclause2", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@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" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "name", + "expr": "p.name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "shape", + "expr": "p.shape", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "gis_all", + "column": null, + "expr": "gis_all", + "alias": "p", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "name": "cte" + }, + "cte2": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 28, + "idx": 28, + "tokens": [ + { + "@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" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "name", + "expr": "p.name", + "alias": "n2", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "shape", + "expr": "p.shape", + "alias": "sh2", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "gis_all", + "column": null, + "expr": "gis_all", + "alias": "p", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 27 + } + ], + "brackets": 0 + }, + "name": "cte2" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@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" + }, + { + "@type": "@150" + }, + { + "@type": "@151" + }, + { + "@type": "@152" + }, + { + "@type": "@153" + }, + { + "@type": "@154" + }, + { + "@type": "@155" + }, + { + "@type": "@156" + }, + { + "@type": "@157" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte.*", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte2", + "column": null, + "expr": "cte2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte2", + "column": null, + "expr": "cte2", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "CROSS", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "gis_all", + "column": null, + "expr": "gis_all", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 13, + "last": 109 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 148 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateViewMultiple.in b/tests/data/parser/parseCreateViewMultiple.in new file mode 100644 index 000000000..5531bf29e --- /dev/null +++ b/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/tests/data/parser/parseCreateViewMultiple.out b/tests/data/parser/parseCreateViewMultiple.out new file mode 100644 index 000000000..d88c63e8e --- /dev/null +++ b/tests/data/parser/parseCreateViewMultiple.out @@ -0,0 +1,1783 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 152, + "idx": 152, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "T1", + "value": "T1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHAR", + "value": "CHAR", + "keyword": "CHAR", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V1", + "value": "V1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "T1", + "value": "T1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'A%'", + "value": "A%", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V2", + "value": "V2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V1", + "value": "V1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'%Z'", + "value": "%Z", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 1, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTION", + "value": "OPTION", + "keyword": "OPTION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V3", + "value": "V3", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V2", + "value": "V2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'AB%'", + "value": "AB%", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 1, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V4", + "value": "V4", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V3", + "value": "V3", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'%YZ'", + "value": "%YZ", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 1, + "position": 337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADED", + "value": "CASCADED", + "keyword": "CASCADED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTION", + "value": "OPTION", + "keyword": "OPTION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V5", + "value": "V5", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V4", + "value": "V4", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'ABC%'", + "value": "ABC%", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 1, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "name": "COL1", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "CHAR", + "parameters": [ + "10" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 151 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateViewWithQuotes.out b/tests/data/parser/parseCreateViewWithQuotes.out index 316f637cc..5760f4a27 100644 --- a/tests/data/parser/parseCreateViewWithQuotes.out +++ b/tests/data/parser/parseCreateViewWithQuotes.out @@ -1,10 +1,646 @@ -a:4:{s:5:"query";s:211:"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`;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:211:"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`;";s:3:"len";i:211;s:4:"last";i:211;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:44:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ALGORITHM";s:5:"value";s:9:"ALGORITHM";s:7:"keyword";s:9:"ALGORITHM";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"UNDEFINED";s:5:"value";s:9:"UNDEFINED";s:7:"keyword";s:9:"UNDEFINED";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFINER";s:5:"value";s:7:"DEFINER";s:7:"keyword";s:7:"DEFINER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:34;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"`root`@`localhost`";s:5:"value";s:14:"root@localhost";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:4;s:8:"position";i:35;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SQL SECURITY";s:5:"value";s:12:"SQL SECURITY";s:7:"keyword";s:12:"SQL SECURITY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:54;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFINER";s:5:"value";s:7:"DEFINER";s:7:"keyword";s:7:"DEFINER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:67;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"VIEW";s:5:"value";s:4:"VIEW";s:7:"keyword";s:4:"VIEW";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:75;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`test_view`";s:5:"value";s:9:"test_view";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:80;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:93;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`email_content`";s:5:"value";s:13:"email_content";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:103;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:118;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`content_id`";s:5:"value";s:10:"content_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:119;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:132;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:134;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`content_id`";s:5:"value";s:10:"content_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:135;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:147;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`email_content`";s:5:"value";s:13:"email_content";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:149;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:164;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`brand_id`";s:5:"value";s:8:"brand_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:165;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:175;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:176;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:178;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`brand_id`";s:5:"value";s:8:"brand_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:179;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:189;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"from";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:190;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:194;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`email_content`";s:5:"value";s:13:"email_content";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:195;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:210;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:44;s:3:"idx";i:44;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"test_view";s:6:"column";N;s:4:"expr";s:11:"`test_view`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:23:{i:0;r:142;i:1;r:149;i:2;r:156;i:3;r:163;i:4;r:170;i:5;r:177;i:6;r:184;i:7;r:191;i:8;r:198;i:9;r:205;i:10;r:212;i:11;r:219;i:12;r:226;i:13;r:233;i:14;r:240;i:15;r:247;i:16;r:254;i:17;r:261;i:18;r:268;i:19;r:275;i:20;r:282;i:21;r:289;i:22;r:296;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:4:{i:3;a:4:{s:4:"name";s:9:"ALGORITHM";s:6:"equals";b:1;s:4:"expr";s:9:"UNDEFINED";s:5:"value";s:9:"UNDEFINED";}i:4;a:4:{s:4:"name";s:7:"DEFINER";s:6:"equals";b:1;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:14:"root@localhost";s:4:"expr";s:18:"`root`@`localhost`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:18:"`root`@`localhost`";}i:5;a:4:{s:4:"name";s:12:"SQL SECURITY";s:6:"equals";b:0;s:4:"expr";s:7:"DEFINER";s:5:"value";s:7:"DEFINER";}i:6;s:4:"VIEW";}}s:5:"first";i:0;s:4:"last";i:42;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 44, + "idx": 44, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNDEFINED", + "value": "UNDEFINED", + "keyword": "UNDEFINED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`localhost`", + "value": "root@localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test_view`", + "value": "test_view", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@49" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_view", + "column": null, + "expr": "`test_view`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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", + "database": null, + "table": "email_content", + "column": null, + "expr": "`email_content`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": [], + "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", + "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 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateViewWithUnion.in b/tests/data/parser/parseCreateViewWithUnion.in new file mode 100644 index 000000000..4ea974146 --- /dev/null +++ b/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/tests/data/parser/parseCreateViewWithUnion.out b/tests/data/parser/parseCreateViewWithUnion.out new file mode 100644 index 000000000..a97ed35a6 --- /dev/null +++ b/tests/data/parser/parseCreateViewWithUnion.out @@ -0,0 +1,716 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 47, + "idx": 47, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees_view`", + "value": "employees_view", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`gender`", + "value": "gender", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'M'", + "value": "M", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`gender`", + "value": "gender", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'F'", + "value": "F", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@53" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "employees_view", + "column": null, + "expr": "`employees_view`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "employees", + "column": null, + "expr": "`employees`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "employees", + "gender", + "M" + ], + "isOperator": false, + "expr": "`employees`.`gender` = 'M'", + "leftOperand": "`employees`.`gender`", + "operator": "=", + "rightOperand": "'M'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": "@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" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 45 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateViewWithWrongSyntax.in b/tests/data/parser/parseCreateViewWithWrongSyntax.in new file mode 100644 index 000000000..be3279778 --- /dev/null +++ b/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/tests/data/parser/parseCreateViewWithWrongSyntax.out b/tests/data/parser/parseCreateViewWithWrongSyntax.out new file mode 100644 index 000000000..27a0a61c5 --- /dev/null +++ b/tests/data/parser/parseCreateViewWithWrongSyntax.out @@ -0,0 +1,363 @@ +{ + "query": "CREATE VIEW abc AS SELECT a, b, FROM a", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE VIEW abc AS SELECT a, b, FROM a", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "abc", + "column": null, + "expr": "abc", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@22" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseCreateViewWithoutQuotes.out b/tests/data/parser/parseCreateViewWithoutQuotes.out index b39de3f92..e7d49855a 100644 --- a/tests/data/parser/parseCreateViewWithoutQuotes.out +++ b/tests/data/parser/parseCreateViewWithoutQuotes.out @@ -1,10 +1,659 @@ -a:4:{s:5:"query";s:207:"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`;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:207:"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`;";s:3:"len";i:207;s:4:"last";i:207;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:45:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"CREATE";s:5:"value";s:6:"CREATE";s:7:"keyword";s:6:"CREATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"ALGORITHM";s:5:"value";s:9:"ALGORITHM";s:7:"keyword";s:9:"ALGORITHM";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"UNDEFINED";s:5:"value";s:9:"UNDEFINED";s:7:"keyword";s:9:"UNDEFINED";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFINER";s:5:"value";s:7:"DEFINER";s:7:"keyword";s:7:"DEFINER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:27;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:34;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"root";s:5:"value";s:4:"root";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:35;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"@localhost";s:5:"value";s:9:"localhost";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:39;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"SQL SECURITY";s:5:"value";s:12:"SQL SECURITY";s:7:"keyword";s:12:"SQL SECURITY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFINER";s:5:"value";s:7:"DEFINER";s:7:"keyword";s:7:"DEFINER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:63;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"VIEW";s:5:"value";s:4:"VIEW";s:7:"keyword";s:4:"VIEW";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:71;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`test_view`";s:5:"value";s:9:"test_view";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:76;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:92;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`email_content`";s:5:"value";s:13:"email_content";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:99;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:114;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`content_id`";s:5:"value";s:10:"content_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:115;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:128;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`content_id`";s:5:"value";s:10:"content_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:131;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:143;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:144;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`email_content`";s:5:"value";s:13:"email_content";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:145;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:160;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`brand_id`";s:5:"value";s:8:"brand_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:161;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:171;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:172;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:174;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`brand_id`";s:5:"value";s:8:"brand_id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:175;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:185;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"from";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:186;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:190;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"`email_content`";s:5:"value";s:13:"email_content";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:191;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:206;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:45;s:3:"idx";i:45;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\CreateStatement":17:{s:4:"name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"test_view";s:6:"column";N;s:4:"expr";s:11:"`test_view`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:13:"entityOptions";N;s:6:"fields";N;s:6:"select";N;s:4:"like";N;s:11:"partitionBy";N;s:13:"partitionsNum";N;s:14:"subpartitionBy";N;s:16:"subpartitionsNum";N;s:10:"partitions";N;s:5:"table";N;s:6:"return";N;s:10:"parameters";N;s:4:"body";a:23:{i:0;r:149;i:1;r:156;i:2;r:163;i:3;r:170;i:4;r:177;i:5;r:184;i:6;r:191;i:7;r:198;i:8;r:205;i:9;r:212;i:10;r:219;i:11;r:226;i:12;r:233;i:13;r:240;i:14;r:247;i:15;r:254;i:16;r:261;i:17;r:268;i:18;r:275;i:19;r:282;i:20;r:289;i:21;r:296;i:22;r:303;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:4:{i:3;a:4:{s:4:"name";s:9:"ALGORITHM";s:6:"equals";b:1;s:4:"expr";s:9:"UNDEFINED";s:5:"value";s:9:"UNDEFINED";}i:4;a:4:{s:4:"name";s:7:"DEFINER";s:6:"equals";b:1;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"root";s:4:"expr";s:14:"root@localhost";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:14:"root@localhost";}i:5;a:4:{s:4:"name";s:12:"SQL SECURITY";s:6:"equals";b:0;s:4:"expr";s:7:"DEFINER";s:5:"value";s:7:"DEFINER";}i:6;s:4:"VIEW";}}s:5:"first";i:0;s:4:"last";i:43;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 45, + "idx": 45, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNDEFINED", + "value": "UNDEFINED", + "keyword": "UNDEFINED", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "root", + "value": "root", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@localhost", + "value": "localhost", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test_view`", + "value": "test_view", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@51" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_view", + "column": null, + "expr": "`test_view`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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", + "database": null, + "table": "email_content", + "column": null, + "expr": "`email_content`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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": [], + "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", + "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 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete.out b/tests/data/parser/parseDelete.out index e55e8ca12..db8c66b6f 100644 --- a/tests/data/parser/parseDelete.out +++ b/tests/data/parser/parseDelete.out @@ -1,25 +1,574 @@ -a:4:{s:5:"query";s:122:"DELETE LOW_PRIORITY -/* */ -FROM - `test`.users -WHERE - `id`<3 AND (username="Dan" or username="Paul") -ORDER BY - id -;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:122:"DELETE LOW_PRIORITY -/* */ -FROM - `test`.users -WHERE - `id`<3 AND (username="Dan" or username="Paul") -ORDER BY - id -;";s:3:"len";i:122;s:4:"last";i:122;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:38:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:20;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`test`";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:35;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:42;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:58;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"<";s:5:"value";s:1:"<";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:62;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"3";s:5:"value";i:3;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:63;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:65;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:69;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:70;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:78;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:""Dan"";s:5:"value";s:3:"Dan";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:79;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"or";s:5:"value";s:2:"OR";s:7:"keyword";s:2:"OR";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:85;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:88;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:96;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Paul"";s:5:"value";s:4:"Paul";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:97;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:103;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:104;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:105;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:118;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:121;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:38;s:3:"idx";i:38;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:4:"test";s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:12:"`test`.users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:5:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:2:"id";}s:10:"isOperator";b:0;s:4:"expr";s:6:"`id`<3";}i:1;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:2;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:8:"username";i:1;s:3:"Dan";}s:10:"isOperator";b:0;s:4:"expr";s:15:"(username="Dan"";}i:3;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:2:"OR";}i:4;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:8:"username";i:1;s:4:"Paul";}s:10:"isOperator";b:0;s:4:"expr";s:16:"username="Paul")";}}s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:12:"LOW_PRIORITY";}}s:5:"first";i:0;s:4:"last";i:35;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 38, + "idx": 38, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test`", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "or", + "value": "OR", + "keyword": "OR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Paul\"", + "value": "Paul", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 2, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@47" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [ + "id" + ], + "isOperator": false, + "expr": "`id`<3", + "leftOperand": "`id`", + "operator": "<", + "rightOperand": "3" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "username", + "Dan" + ], + "isOperator": false, + "expr": "(username=\"Dan\"", + "leftOperand": "(username", + "operator": "=", + "rightOperand": "\"Dan\"" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "OR", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "username", + "Paul" + ], + "isOperator": false, + "expr": "username=\"Paul\")", + "leftOperand": "username", + "operator": "=", + "rightOperand": "\"Paul\")" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 35 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete10.out b/tests/data/parser/parseDelete10.out index e5d9f4482..3d9b6e588 100644 --- a/tests/data/parser/parseDelete10.out +++ b/tests/data/parser/parseDelete10.out @@ -1 +1,470 @@ -a:4:{s:5:"query";s:71:"DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:71:"DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1";s:3:"len";i:71;s:4:"last";i:71;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:32:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:59;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:62;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:68;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:69;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:32;s:3:"idx";i:32;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";s:2:"t2";s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table1";s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:8:"table2.*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:30;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1", + "len": 71, + "last": 71, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 32, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@35" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete11.out b/tests/data/parser/parseDelete11.out index d836842ae..f6d533471 100644 --- a/tests/data/parser/parseDelete11.out +++ b/tests/data/parser/parseDelete11.out @@ -1 +1,494 @@ -a:4:{s:5:"query";s:81:"DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:81:"DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1";s:3:"len";i:81;s:4:"last";i:81;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:34:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:41;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:48;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:51;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:57;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:64;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t2`";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:67;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:72;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:78;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:79;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:80;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:34;s:3:"idx";i:34;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:6:"table2";s:5:"table";N;s:6:"column";N;s:4:"expr";s:8:"table2.*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table1";s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table2";s:4:"expr";s:6:"table2";s:5:"alias";s:2:"t2";s:8:"function";N;s:8:"subquery";N;}}s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:32;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@38" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "table2", + "table": null, + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table2", + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete12.out b/tests/data/parser/parseDelete12.out index e5d07fd35..37b649e73 100644 --- a/tests/data/parser/parseDelete12.out +++ b/tests/data/parser/parseDelete12.out @@ -1 +1,322 @@ -a:4:{s:5:"query";s:46:"DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:46:"DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25";s:3:"len";i:46;s:4:"last";i:46;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:35;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:41;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:42;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"25";s:5:"value";i:25;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:44;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";N;s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:0;s:8:"rowCount";i:25;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:19;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 25 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete13.in b/tests/data/parser/parseDelete13.in new file mode 100644 index 000000000..45451d382 --- /dev/null +++ b/tests/data/parser/parseDelete13.in @@ -0,0 +1 @@ +DELETE FROM emp x WHERE x.salary = 20 \ No newline at end of file diff --git a/tests/data/parser/parseDelete13.out b/tests/data/parser/parseDelete13.out new file mode 100644 index 000000000..bce933367 --- /dev/null +++ b/tests/data/parser/parseDelete13.out @@ -0,0 +1,286 @@ +{ + "query": "DELETE FROM emp x WHERE x.salary = 20", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE FROM emp x WHERE x.salary = 20", + "len": 37, + "last": 37, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "emp", + "value": "emp", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "x", + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "x", + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "salary", + "value": "salary", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "emp", + "column": null, + "expr": "emp", + "alias": "x", + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "x", + "salary" + ], + "isOperator": false, + "expr": "x.salary = 20", + "leftOperand": "x.salary", + "operator": "=", + "rightOperand": "20" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete2.out b/tests/data/parser/parseDelete2.out index 554ab7f56..57d969503 100644 --- a/tests/data/parser/parseDelete2.out +++ b/tests/data/parser/parseDelete2.out @@ -1 +1,161 @@ -a:4:{s:5:"query";s:21:"DELETE IGNORE FROM t1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:21:"DELETE IGNORE FROM t1";s:3:"len";i:21;s:4:"last";i:21;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:8:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:8;s:3:"idx";i:8;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:6:"IGNORE";}}s:5:"first";i:0;s:4:"last";i:6;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE IGNORE FROM t1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE IGNORE FROM t1", + "len": 21, + "last": 21, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete3.out b/tests/data/parser/parseDelete3.out index 3f23483da..0bd98637e 100644 --- a/tests/data/parser/parseDelete3.out +++ b/tests/data/parser/parseDelete3.out @@ -1 +1,241 @@ -a:4:{s:5:"query";s:31:"DELETE IGNORE FROM t1 WHERE 1=1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:31:"DELETE IGNORE FROM t1 WHERE 1=1";s:3:"len";i:31;s:4:"last";i:31;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:14:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:14;s:3:"idx";i:14;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:6:"IGNORE";}}s:5:"first";i:0;s:4:"last";i:12;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE IGNORE FROM t1 WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE IGNORE FROM t1 WHERE 1=1", + "len": 31, + "last": 31, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 12 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete4.out b/tests/data/parser/parseDelete4.out index 36cfcfa98..ed0aee28f 100644 --- a/tests/data/parser/parseDelete4.out +++ b/tests/data/parser/parseDelete4.out @@ -1 +1,304 @@ -a:4:{s:5:"query";s:43:"DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:43:"DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id";s:3:"len";i:43;s:4:"last";i:43;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:32;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:41;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:18;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:6:"IGNORE";}}s:5:"first";i:0;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete5.out b/tests/data/parser/parseDelete5.out index 07c9deebf..63ab09e20 100644 --- a/tests/data/parser/parseDelete5.out +++ b/tests/data/parser/parseDelete5.out @@ -1 +1,374 @@ -a:4:{s:5:"query";s:54:"DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:54:"DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25";s:3:"len";i:54;s:4:"last";i:54;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:32;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:41;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:44;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:50;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:51;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"25";s:5:"value";i:25;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:52;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:24;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:0;s:8:"rowCount";i:25;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:6:"IGNORE";}}s:5:"first";i:0;s:4:"last";i:22;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 25 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete6.out b/tests/data/parser/parseDelete6.out index 43142a361..f9e4dc059 100644 --- a/tests/data/parser/parseDelete6.out +++ b/tests/data/parser/parseDelete6.out @@ -1 +1,224 @@ -a:4:{s:5:"query";s:33:"DELETE IGNORE FROM t1 ORDER BY id";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:33:"DELETE IGNORE FROM t1 ORDER BY id";s:3:"len";i:33;s:4:"last";i:33;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:12:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:12;s:3:"idx";i:12;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:6:"IGNORE";}}s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE IGNORE FROM t1 ORDER BY id", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE IGNORE FROM t1 ORDER BY id", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete7.out b/tests/data/parser/parseDelete7.out index ca0311324..4a0827905 100644 --- a/tests/data/parser/parseDelete7.out +++ b/tests/data/parser/parseDelete7.out @@ -1 +1,298 @@ -a:4:{s:5:"query";s:44:"DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:44:"DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25";s:3:"len";i:44;s:4:"last";i:44;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:40;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"25";s:5:"value";i:25;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:42;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:18;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:0;s:8:"rowCount";i:25;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:6:"IGNORE";}}s:5:"first";i:0;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 25 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete8.out b/tests/data/parser/parseDelete8.out index c55792130..df19e5804 100644 --- a/tests/data/parser/parseDelete8.out +++ b/tests/data/parser/parseDelete8.out @@ -1 +1,246 @@ -a:4:{s:5:"query";s:33:"DELETE IGNORE FROM t1 LIMIT 0, 25";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:33:"DELETE IGNORE FROM t1 LIMIT 0, 25";s:3:"len";i:33;s:4:"last";i:33;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"25";s:5:"value";i:25;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:0;s:8:"rowCount";i:25;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;s:6:"IGNORE";}}s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE IGNORE FROM t1 LIMIT 0, 25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE IGNORE FROM t1 LIMIT 0, 25", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelete9.out b/tests/data/parser/parseDelete9.out index b4dea3ac8..8af79004b 100644 --- a/tests/data/parser/parseDelete9.out +++ b/tests/data/parser/parseDelete9.out @@ -1 +1,392 @@ -a:4:{s:5:"query";s:61:"DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:61:"DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2";s:3:"len";i:61;s:4:"last";i:61;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:26:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:59;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:26;s:3:"idx";i:26;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";s:2:"t2";s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table1";s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:8:"table2.*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:24;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 26, + "idx": 26, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": null, + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr1.out b/tests/data/parser/parseDeleteErr1.out index 6d9ee5fd9..bda516cbc 100644 --- a/tests/data/parser/parseDeleteErr1.out +++ b/tests/data/parser/parseDeleteErr1.out @@ -1 +1,222 @@ -a:4:{s:5:"query";s:35:"DELETE QUICK USING table1, table2.*";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:35:"DELETE QUICK USING table1, table2.*";s:3:"len";i:35;s:4:"last";i:35;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:25;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:34;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:14;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";N;s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:37;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK USING table1, table2.*", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK USING table1, table2.*", + "len": 35, + "last": 35, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": null, + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr10.out b/tests/data/parser/parseDeleteErr10.out index 2dfdd65a4..cc9508989 100644 --- a/tests/data/parser/parseDeleteErr10.out +++ b/tests/data/parser/parseDeleteErr10.out @@ -1 +1,486 @@ -a:4:{s:5:"query";s:65:"DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt ASC a =1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:65:"DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt ASC a =1;";s:3:"len";i:65;s:4:"last";i:65;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:33:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"t";s:5:"value";s:1:"t";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"tt";s:5:"value";s:2:"tt";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:60;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:62;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:63;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:64;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:33;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t1";s:4:"expr";s:2:"t1";s:5:"alias";s:1:"t";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t2";s:4:"expr";s:2:"t2";s:5:"alias";s:2:"tt";s:8:"function";N;s:8:"subquery";N;}}s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:24;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:184;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:184;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt ASC a =1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 33, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tt", + "value": "tt", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": "t", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": "tt", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@31" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@31" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr11.out b/tests/data/parser/parseDeleteErr11.out index 537f8d93b..2ac6a21e1 100644 --- a/tests/data/parser/parseDeleteErr11.out +++ b/tests/data/parser/parseDeleteErr11.out @@ -1 +1,302 @@ -a:4:{s:5:"query";s:40:"DELETE QUICK FROM table1 WHERE a = 1 ASC";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:40:"DELETE QUICK FROM table1 WHERE a = 1 ASC";s:3:"len";i:40;s:4:"last";i:40;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:35;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:37;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:19;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:1:"a";}s:10:"isOperator";b:0;s:4:"expr";s:5:"a = 1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:15;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:121;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:121;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1 WHERE a = 1 ASC", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK FROM table1 WHERE a = 1 ASC", + "len": 40, + "last": 40, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 19, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a = 1", + "leftOperand": "a", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@23" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@23" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr12.out b/tests/data/parser/parseDeleteErr12.out index 2231e2afc..7098aee8a 100644 --- a/tests/data/parser/parseDeleteErr12.out +++ b/tests/data/parser/parseDeleteErr12.out @@ -1,4 +1,576 @@ -a:4:{s:5:"query";s:74:"DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt as ttt WHEE a =1; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:74:"DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt as ttt WHEE a =1; -";s:3:"len";i:74;s:4:"last";i:74;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:38:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"t";s:5:"value";s:1:"t";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"tt";s:5:"value";s:2:"tt";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ttt";s:5:"value";s:3:"ttt";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:59;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"WHEE";s:5:"value";s:4:"WHEE";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:63;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:68;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:70;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:71;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:72;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:73;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:38;s:3:"idx";i:38;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t1";s:4:"expr";s:2:"t1";s:5:"alias";s:1:"t";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t2";s:4:"expr";s:2:"t2";s:5:"alias";s:2:"tt";s:8:"function";N;s:8:"subquery";N;}}s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:26;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:7:{i:0;a:3:{i:0;s:30:"An alias was previously found.";i:1;r:198;i:2;i:0;}i:1;a:3:{i:0;s:22:"An alias was expected.";i:1;r:191;i:2;i:0;}i:2;a:3:{i:0;s:17:"Unexpected token.";i:1;r:198;i:2;i:0;}i:3;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:198;i:2;i:0;}i:4;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:212;i:2;i:0;}i:5;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:226;i:2;i:0;}i:6;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:247;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt as ttt WHEE a =1;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 38, + "idx": 38, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tt", + "value": "tt", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ttt", + "value": "ttt", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEE", + "value": "WHEE", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@43" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": "t", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": "tt", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@33" + }, + 0 + ], + [ + "An alias was expected.", + { + "@type": "@32" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@35" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@40" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr2.out b/tests/data/parser/parseDeleteErr2.out index b6042221f..32053b4b7 100644 --- a/tests/data/parser/parseDeleteErr2.out +++ b/tests/data/parser/parseDeleteErr2.out @@ -1 +1,456 @@ -a:4:{s:5:"query";s:76:"DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:76:"DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1";s:3:"len";i:76;s:4:"last";i:76;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:32:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:43;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:50;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:52;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:59;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t2`";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:62;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:67;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:73;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:74;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:75;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:32;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";N;s:5:"using";N;s:7:"columns";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table1";s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:8:"table2.*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:86;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:86;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1", + "len": 76, + "last": 76, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@36" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": null, + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": null, + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@17" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@17" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr3.out b/tests/data/parser/parseDeleteErr3.out index 2239b6471..e3430ca34 100644 --- a/tests/data/parser/parseDeleteErr3.out +++ b/tests/data/parser/parseDeleteErr3.out @@ -1 +1,437 @@ -a:4:{s:5:"query";s:69:"DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:69:"DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1";s:3:"len";i:69;s:4:"last";i:69;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:29:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:40;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:52;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t2`";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:55;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:60;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:66;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:67;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:68;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:29;s:3:"idx";i:30;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";N;s:5:"using";N;s:7:"columns";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table1";s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:15:"table2.* table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:30:"An alias was previously found.";i:1;r:128;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:128;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:128;i:2;i:0;}i:3;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:142;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1", + "len": 69, + "last": 69, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 29, + "idx": 30, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": null, + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2.* table1", + "alias": "t1", + "function": null, + "subquery": null + } + ], + "partition": null, + "where": null, + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@24" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@24" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@24" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@26" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr4.out b/tests/data/parser/parseDeleteErr4.out index 969992af5..d1aae265b 100644 --- a/tests/data/parser/parseDeleteErr4.out +++ b/tests/data/parser/parseDeleteErr4.out @@ -1 +1,554 @@ -a:4:{s:5:"query";s:96:"DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 ORDER BY id ASC";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:96:"DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 ORDER BY id ASC";s:3:"len";i:96;s:4:"last";i:96;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:39:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:63;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t2`";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:66;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:71;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:77;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:78;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:79;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:81;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:90;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:93;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:39;s:3:"idx";i:40;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:6:"table2";s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"table2.* table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}}s:5:"using";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table2";s:4:"expr";s:6:"table2";s:5:"alias";s:2:"t2";s:8:"function";N;s:8:"subquery";N;}}s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:32;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:56:"This type of clause is not valid in Multi-table queries.";i:1;r:240;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:240;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 39, + "idx": 40, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "table2", + "table": null, + "column": null, + "expr": "table2.* table1", + "alias": "t1", + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table2", + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This type of clause is not valid in Multi-table queries.", + { + "@type": "@41" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@41" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr5.out b/tests/data/parser/parseDeleteErr5.out index 416d62c71..5bcdaf701 100644 --- a/tests/data/parser/parseDeleteErr5.out +++ b/tests/data/parser/parseDeleteErr5.out @@ -1 +1,407 @@ -a:4:{s:5:"query";s:60:"DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:60:"DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1";s:3:"len";i:60;s:4:"last";i:60;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:26:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:35;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:51;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:57;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:58;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:59;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:26;s:3:"idx";i:27;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:19;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:149;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:149;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1", + "len": 60, + "last": 60, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 26, + "idx": 27, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@27" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@27" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr6.out b/tests/data/parser/parseDeleteErr6.out index d1002c982..8b8e29971 100644 --- a/tests/data/parser/parseDeleteErr6.out +++ b/tests/data/parser/parseDeleteErr6.out @@ -1 +1,565 @@ -a:4:{s:5:"query";s:92:"DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 LIMIT 0, 25";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:92:"DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 LIMIT 0, 25";s:3:"len";i:92;s:4:"last";i:92;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:40:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:63;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t2`";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:66;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:71;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:77;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:78;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:79;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:81;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"25";s:5:"value";i:25;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:90;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:40;s:3:"idx";i:41;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:6:"table2";s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"table2.* table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}}s:5:"using";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:6:"table2";s:4:"expr";s:6:"table2";s:5:"alias";s:2:"t2";s:8:"function";N;s:8:"subquery";N;}}s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:32;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:56:"This type of clause is not valid in Multi-table queries.";i:1;r:240;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:240;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 LIMIT 0, 25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 40, + "idx": 41, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "table2", + "table": null, + "column": null, + "expr": "table2.* table1", + "alias": "t1", + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "table2", + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This type of clause is not valid in Multi-table queries.", + { + "@type": "@41" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@41" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr7.out b/tests/data/parser/parseDeleteErr7.out index a3bdcfc3a..0877086ce 100644 --- a/tests/data/parser/parseDeleteErr7.out +++ b/tests/data/parser/parseDeleteErr7.out @@ -1 +1,387 @@ -a:4:{s:5:"query";s:58:"DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:58:"DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE";s:3:"len";i:58;s:4:"last";i:58;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:35;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:37;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:53;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:25;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:1:"a";}s:10:"isOperator";b:0;s:4:"expr";s:5:"a = 1";}}s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:21;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:163;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:163;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE", + "len": 58, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a = 1", + "leftOperand": "a", + "operator": "=", + "rightOperand": "1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@29" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@29" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr8.out b/tests/data/parser/parseDeleteErr8.out index 96ffa8794..3028146a0 100644 --- a/tests/data/parser/parseDeleteErr8.out +++ b/tests/data/parser/parseDeleteErr8.out @@ -1 +1,198 @@ -a:4:{s:5:"query";s:28:"DELETE QUICK FROM table1 ASC";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:28:"DELETE QUICK FROM table1 ASC";s:3:"len";i:28;s:4:"last";i:28;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";N;s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:7;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:65;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:65;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1 ASC", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE QUICK FROM table1 ASC", + "len": 28, + "last": 28, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@13" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDeleteErr9.out b/tests/data/parser/parseDeleteErr9.out index bde9a750f..0bcde7022 100644 --- a/tests/data/parser/parseDeleteErr9.out +++ b/tests/data/parser/parseDeleteErr9.out @@ -1 +1,507 @@ -a:4:{s:5:"query";s:66:"DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt WHEE a =1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:66:"DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt WHEE a =1;";s:3:"len";i:66;s:4:"last";i:66;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:33:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"QUICK";s:5:"value";s:5:"QUICK";s:7:"keyword";s:5:"QUICK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"USING";s:5:"value";s:5:"USING";s:7:"keyword";s:5:"USING";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"t";s:5:"value";s:1:"t";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"tt";s:5:"value";s:2:"tt";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"WHEE";s:5:"value";s:4:"WHEE";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:56;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:61;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:63;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:64;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:65;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:33;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":10:{s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:5:"using";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t1";s:4:"expr";s:2:"t1";s:5:"alias";s:1:"t";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t2";s:4:"expr";s:2:"t2";s:5:"alias";s:2:"tt";s:8:"function";N;s:8:"subquery";N;}}s:7:"columns";N;s:9:"partition";N;s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;s:5:"QUICK";}}s:5:"first";i:0;s:4:"last";i:24;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:5:{i:0;a:3:{i:0;s:30:"An alias was previously found.";i:1;r:184;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:184;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:184;i:2;i:0;}i:3;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:198;i:2;i:0;}i:4;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:219;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt WHEE a =1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 33, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tt", + "value": "tt", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEE", + "value": "WHEE", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": "t", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": "tt", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@31" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@31" + }, + 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/tests/data/parser/parseDeleteJoin.out b/tests/data/parser/parseDeleteJoin.out index 5db0fdc13..d4216f0b8 100644 --- a/tests/data/parser/parseDeleteJoin.out +++ b/tests/data/parser/parseDeleteJoin.out @@ -1 +1,594 @@ -a:4:{s:5:"query";s:83:"DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:83:"DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id";s:3:"len";i:83;s:4:"last";i:83;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:39:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"DELETE";s:5:"value";s:6:"DELETE";s:7:"keyword";s:6:"DELETE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:14;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"INNER JOIN";s:5:"value";s:10:"INNER JOIN";s:7:"keyword";s:10:"INNER JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:22;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"INNER JOIN";s:5:"value";s:10:"INNER JOIN";s:7:"keyword";s:10:"INNER JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:36;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t3";s:5:"value";s:2:"t3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:58;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:59;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:61;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:62;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:64;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:65;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:68;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:72;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:74;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:77;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t3";s:5:"value";s:2:"t3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:78;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:81;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:39;s:3:"idx";i:39;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\DeleteStatement":11:{s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"join";a:2:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:5:"INNER";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t2";s:6:"column";N;s:4:"expr";s:2:"t2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}i:1;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:5:"INNER";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t3";s:6:"column";N;s:4:"expr";s:2:"t3";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"using";N;s:7:"columns";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t1";s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"t2";s:4:"expr";s:2:"t2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:3:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t1";i:1;s:2:"id";i:2;s:2:"t2";}s:10:"isOperator";b:0;s:4:"expr";s:11:"t1.id=t2.id";}i:1;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:2;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t2";i:1;s:2:"id";i:2;s:2:"t3";}s:10:"isOperator";b:0;s:4:"expr";s:11:"t2.id=t3.id";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:37;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 39, + "idx": 39, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "INNER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "INNER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t3", + "column": null, + "expr": "t3", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t1", + "id", + "t2" + ], + "isOperator": false, + "expr": "t1.id=t2.id", + "leftOperand": "t1.id", + "operator": "=", + "rightOperand": "t2.id" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t2", + "id", + "t3" + ], + "isOperator": false, + "expr": "t2.id=t3.id", + "leftOperand": "t2.id", + "operator": "=", + "rightOperand": "t3.id" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 37 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDelimiter.out b/tests/data/parser/parseDelimiter.out index 5a7223344..7f44f10e5 100644 --- a/tests/data/parser/parseDelimiter.out +++ b/tests/data/parser/parseDelimiter.out @@ -1,13 +1,568 @@ -a:4:{s:5:"query";s:82:"SELECT * FROM foo; -DELIMITER $$ -SELECT * FROM bar$$ -DELIMITER ; -SELECT * FROM baz;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:82:"SELECT * FROM foo; -DELIMITER $$ -SELECT * FROM bar$$ -DELIMITER ; -SELECT * FROM baz;";s:3:"len";i:82;s:4:"last";i:82;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:35:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"$$";s:5:"value";s:2:"$$";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:32;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:39;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:41;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:46;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"$$";s:5:"value";s:2:"$$";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DELIMITER";s:5:"value";s:9:"DELIMITER";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:52;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:62;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:64;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:71;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"baz";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:78;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:81;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:35;s:3:"idx";i:35;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:3:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:6;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"bar";s:6:"column";N;s:4:"expr";s:3:"bar";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:13;s:4:"last";i:19;}i:2;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"baz";s:6:"column";N;s:4:"expr";s:3:"baz";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:26;s:4:"last";i:32;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT * FROM foo;\nDELIMITER $$\nSELECT * FROM bar$$\nDELIMITER ;\nSELECT * FROM baz;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM foo;\nDELIMITER $$\nSELECT * FROM bar$$\nDELIMITER ;\nSELECT * FROM baz;", + "len": 82, + "last": 82, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 35, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 13, + "last": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "baz", + "column": null, + "expr": "baz", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 26, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDrop.in b/tests/data/parser/parseDrop.in new file mode 100644 index 000000000..4cda4b6fe --- /dev/null +++ b/tests/data/parser/parseDrop.in @@ -0,0 +1 @@ +DROP USER IF EXISTS 'testtest'@'%'; \ No newline at end of file diff --git a/tests/data/parser/parseDrop.out b/tests/data/parser/parseDrop.out new file mode 100644 index 000000000..0f63d4802 --- /dev/null +++ b/tests/data/parser/parseDrop.out @@ -0,0 +1,167 @@ +{ + "query": "DROP USER IF EXISTS 'testtest'@'%';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DROP USER IF EXISTS 'testtest'@'%';", + "len": 35, + "last": 35, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DROP", + "value": "DROP", + "keyword": "DROP", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF EXISTS", + "value": "IF EXISTS", + "keyword": "IF EXISTS", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testtest'@'%'", + "value": "testtest@%", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtest@%", + "column": null, + "expr": "'testtest'@'%'", + "alias": null, + "function": null, + "subquery": null + } + ], + "table": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "USER", + "3": "IF EXISTS" + } + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseDrop2.in b/tests/data/parser/parseDrop2.in new file mode 100644 index 000000000..34b5dc014 --- /dev/null +++ b/tests/data/parser/parseDrop2.in @@ -0,0 +1 @@ +DROP USER 'testtest'@'%'; \ No newline at end of file diff --git a/tests/data/parser/parseDrop2.out b/tests/data/parser/parseDrop2.out new file mode 100644 index 000000000..2a6089507 --- /dev/null +++ b/tests/data/parser/parseDrop2.out @@ -0,0 +1,144 @@ +{ + "query": "DROP USER 'testtest'@'%';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DROP USER 'testtest'@'%';", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 7, + "idx": 7, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DROP", + "value": "DROP", + "keyword": "DROP", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testtest'@'%'", + "value": "testtest@%", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 4, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "testtest@%", + "column": null, + "expr": "'testtest'@'%'", + "alias": null, + "function": null, + "subquery": null + } + ], + "table": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "USER" + } + }, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain.out b/tests/data/parser/parseExplain.out index 5d952c9f7..0b59bfa3b 100644 --- a/tests/data/parser/parseExplain.out +++ b/tests/data/parser/parseExplain.out @@ -1 +1,268 @@ -a:4:{s:5:"query";s:27:"EXPLAIN SELECT * FROM test;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:27:"EXPLAIN SELECT * FROM test;";s:3:"len";i:27;s:4:"last";i:27;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"EXPLAIN";s:5:"value";s:7:"EXPLAIN";s:7:"keyword";s:7:"EXPLAIN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:15;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ExplainStatement":4:{s:7:"unknown";a:9:{i:0;r:9;i:1;r:16;i:2;r:23;i:3;r:30;i:4;r:37;i:5;r:44;i:6;r:51;i:7;r:58;i:8;r:65;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "EXPLAIN SELECT * FROM test;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "EXPLAIN SELECT * FROM test;", + "len": 27, + "last": 27, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "@6" + }, + { + "@type": "@7" + }, + { + "@type": "@8" + }, + { + "@type": "@10" + }, + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@15" + }, + { + "@type": "@17" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "statementAlias": "EXPLAIN", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain1.in b/tests/data/parser/parseExplain1.in new file mode 100644 index 000000000..2582d7f16 --- /dev/null +++ b/tests/data/parser/parseExplain1.in @@ -0,0 +1 @@ +ANALYZE SELECT * FROM orders \ No newline at end of file diff --git a/tests/data/parser/parseExplain1.out b/tests/data/parser/parseExplain1.out new file mode 100644 index 000000000..03e6650af --- /dev/null +++ b/tests/data/parser/parseExplain1.out @@ -0,0 +1,254 @@ +{ + "query": "ANALYZE SELECT * FROM orders", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ANALYZE SELECT * FROM orders", + "len": 28, + "last": 28, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orders", + "value": "orders", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "@6" + }, + { + "@type": "@7" + }, + { + "@type": "@8" + }, + { + "@type": "@10" + }, + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@15" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "orders", + "column": null, + "expr": "orders", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "statementAlias": "ANALYZE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain10.in b/tests/data/parser/parseExplain10.in new file mode 100644 index 000000000..80385eb2e --- /dev/null +++ b/tests/data/parser/parseExplain10.in @@ -0,0 +1 @@ +DESC REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); \ No newline at end of file diff --git a/tests/data/parser/parseExplain10.out b/tests/data/parser/parseExplain10.out new file mode 100644 index 000000000..095734fdf --- /dev/null +++ b/tests/data/parser/parseExplain10.out @@ -0,0 +1,411 @@ +{ + "query": "DESC REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESC REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');", + "len": 64, + "last": 64, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Old'", + "value": "Old", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2014-08-20 18:47:00'", + "value": "2014-08-20 18:47:00", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 19, + "tokens": [ + { + "@type": "@6" + }, + { + "@type": "@7" + }, + { + "@type": "@8" + }, + { + "@type": "@9" + }, + { + "@type": "@10" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@17" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@29" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "1", + "'Old'", + "'2014-08-20 18:47:00'" + ], + "values": [ + "1", + "Old", + "2014-08-20 18:47:00" + ] + } + ], + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "statementAlias": "DESC", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain11.in b/tests/data/parser/parseExplain11.in new file mode 100644 index 000000000..de1309cc2 --- /dev/null +++ b/tests/data/parser/parseExplain11.in @@ -0,0 +1 @@ +ANALYSE REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); diff --git a/tests/data/parser/parseExplain11.out b/tests/data/parser/parseExplain11.out new file mode 100644 index 000000000..39593a851 --- /dev/null +++ b/tests/data/parser/parseExplain11.out @@ -0,0 +1,298 @@ +{ + "query": "ANALYSE REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ANALYSE REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');\n", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 22, + "idx": 22, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYSE", + "value": "ANALYSE", + "keyword": "ANALYSE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Old'", + "value": "Old", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2014-08-20 18:47:00'", + "value": "2014-08-20 18:47:00", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain12.in b/tests/data/parser/parseExplain12.in new file mode 100644 index 000000000..b04c52868 --- /dev/null +++ b/tests/data/parser/parseExplain12.in @@ -0,0 +1 @@ +EXPLAIN FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); \ No newline at end of file diff --git a/tests/data/parser/parseExplain12.out b/tests/data/parser/parseExplain12.out new file mode 100644 index 000000000..3dccb2ccc --- /dev/null +++ b/tests/data/parser/parseExplain12.out @@ -0,0 +1,462 @@ +{ + "query": "EXPLAIN FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "EXPLAIN FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');", + "len": 79, + "last": 79, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORMAT", + "value": "FORMAT", + "keyword": "FORMAT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "json", + "value": "json", + "keyword": "JSON", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Old'", + "value": "Old", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2014-08-20 18:47:00'", + "value": "2014-08-20 18:47:00", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 19, + "tokens": [ + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@33" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "1", + "'Old'", + "'2014-08-20 18:47:00'" + ], + "values": [ + "1", + "Old", + "2014-08-20 18:47:00" + ] + } + ], + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "statementAlias": "EXPLAIN", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "FORMAT", + "equals": true, + "expr": "json", + "value": "json" + } + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain13.in b/tests/data/parser/parseExplain13.in new file mode 100644 index 000000000..788bc5648 --- /dev/null +++ b/tests/data/parser/parseExplain13.in @@ -0,0 +1 @@ +DESCRIBE FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); \ No newline at end of file diff --git a/tests/data/parser/parseExplain13.out b/tests/data/parser/parseExplain13.out new file mode 100644 index 000000000..6b0f1a2a9 --- /dev/null +++ b/tests/data/parser/parseExplain13.out @@ -0,0 +1,462 @@ +{ + "query": "DESCRIBE FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESCRIBE FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');", + "len": 80, + "last": 80, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESCRIBE", + "value": "DESCRIBE", + "keyword": "DESCRIBE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORMAT", + "value": "FORMAT", + "keyword": "FORMAT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "json", + "value": "json", + "keyword": "JSON", + "type": { + "@type": "@3" + }, + "flags": 9, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Old'", + "value": "Old", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2014-08-20 18:47:00'", + "value": "2014-08-20 18:47:00", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 1, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 19, + "tokens": [ + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@33" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "1", + "'Old'", + "'2014-08-20 18:47:00'" + ], + "values": [ + "1", + "Old", + "2014-08-20 18:47:00" + ] + } + ], + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "statementAlias": "DESCRIBE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "FORMAT", + "equals": true, + "expr": "json", + "value": "json" + } + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain14.in b/tests/data/parser/parseExplain14.in new file mode 100644 index 000000000..986d0f204 --- /dev/null +++ b/tests/data/parser/parseExplain14.in @@ -0,0 +1 @@ +DESC TABLE `fo` ORDER BY `fo`.`uuid` ASC; \ No newline at end of file diff --git a/tests/data/parser/parseExplain14.out b/tests/data/parser/parseExplain14.out new file mode 100644 index 000000000..bb0d01a69 --- /dev/null +++ b/tests/data/parser/parseExplain14.out @@ -0,0 +1,310 @@ +{ + "query": "DESC TABLE `fo` ORDER BY `fo`.`uuid` ASC;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESC TABLE `fo` ORDER BY `fo`.`uuid` ASC;", + "len": 41, + "last": 41, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fo`", + "value": "fo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fo`", + "value": "fo", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uuid`", + "value": "uuid", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Exceptions\\ParserException", + "token": { + "@type": "@6" + }, + "message": "Unrecognized statement type.", + "code": 0, + "file": "/src/Parser.php", + "line": 619 + } + ], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "@6" + }, + { + "@type": "@7" + }, + { + "@type": "@8" + }, + { + "@type": "@10" + }, + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@21" + } + ] + }, + "statements": [], + "brackets": 0 + }, + "statementAlias": "DESC", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@11" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain2.in b/tests/data/parser/parseExplain2.in new file mode 100644 index 000000000..a9bb330ba --- /dev/null +++ b/tests/data/parser/parseExplain2.in @@ -0,0 +1 @@ +DESC tablename \ No newline at end of file diff --git a/tests/data/parser/parseExplain2.out b/tests/data/parser/parseExplain2.out new file mode 100644 index 000000000..5aa48deb9 --- /dev/null +++ b/tests/data/parser/parseExplain2.out @@ -0,0 +1,99 @@ +{ + "query": "DESC tablename", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESC tablename", + "len": 14, + "last": 14, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "DESC", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": "tablename", + "explainedColumn": null, + "options": null, + "first": 0, + "last": 2 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain3.in b/tests/data/parser/parseExplain3.in new file mode 100644 index 000000000..a91a0f9d8 --- /dev/null +++ b/tests/data/parser/parseExplain3.in @@ -0,0 +1 @@ +EXPLAIN ANALYZE SELECT first_name, last_name, SUM(amount) AS total FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date LIKE '2005-08%' GROUP BY first_name, last_name; \ No newline at end of file diff --git a/tests/data/parser/parseExplain3.out b/tests/data/parser/parseExplain3.out new file mode 100644 index 000000000..7a0523f35 --- /dev/null +++ b/tests/data/parser/parseExplain3.out @@ -0,0 +1,1010 @@ +{ + "query": "EXPLAIN ANALYZE SELECT first_name, last_name, SUM(amount) AS total FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date LIKE '2005-08%' GROUP BY first_name, last_name;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "EXPLAIN ANALYZE SELECT first_name, last_name, SUM(amount) AS total FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date LIKE '2005-08%' GROUP BY first_name, last_name;", + "len": 198, + "last": 198, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 57, + "idx": 57, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "first_name", + "value": "first_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_name", + "value": "last_name", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUM", + "value": "SUM", + "keyword": "SUM", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "amount", + "value": "amount", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "total", + "value": "total", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "staff", + "value": "staff", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "payment", + "value": "payment", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "staff", + "value": "staff", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "staff_id", + "value": "staff_id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "payment", + "value": "payment", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "staff_id", + "value": "staff_id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "payment_date", + "value": "payment_date", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2005-08%'", + "value": "2005-08%", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "first_name", + "value": "first_name", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_name", + "value": "last_name", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@63" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 53, + "idx": 53, + "tokens": [ + { + "@type": "@8" + }, + { + "@type": "@9" + }, + { + "@type": "@10" + }, + { + "@type": "@12" + }, + { + "@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" + }, + { + "@type": "@55" + }, + { + "@type": "@56" + }, + { + "@type": "@57" + }, + { + "@type": "@58" + }, + { + "@type": "@59" + }, + { + "@type": "@60" + }, + { + "@type": "@61" + }, + { + "@type": "@62" + }, + { + "@type": "@64" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "first_name", + "expr": "first_name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "last_name", + "expr": "last_name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "SUM(amount)", + "alias": "total", + "function": "SUM", + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "staff", + "column": null, + "expr": "staff", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "first_name", + "expr": "first_name", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "last_name", + "expr": "last_name", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "INNER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "payment", + "column": null, + "expr": "payment", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "staff", + "staff_id", + "payment" + ], + "isOperator": false, + "expr": "staff.staff_id = payment.staff_id", + "leftOperand": "staff.staff_id", + "operator": "=", + "rightOperand": "payment.staff_id" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "payment_date", + "2005-08%" + ], + "isOperator": false, + "expr": "payment_date LIKE '2005-08%'", + "leftOperand": "payment_date LIKE '2005-08%'", + "operator": "", + "rightOperand": "" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 50 + } + ], + "brackets": 0 + }, + "statementAlias": "EXPLAIN ANALYZE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 56 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain4.in b/tests/data/parser/parseExplain4.in new file mode 100644 index 000000000..86cd3338d --- /dev/null +++ b/tests/data/parser/parseExplain4.in @@ -0,0 +1 @@ +EXPLAIN FORMAT=TREE SELECT * FROM db \ No newline at end of file diff --git a/tests/data/parser/parseExplain4.out b/tests/data/parser/parseExplain4.out new file mode 100644 index 000000000..9d41c8cb9 --- /dev/null +++ b/tests/data/parser/parseExplain4.out @@ -0,0 +1,305 @@ +{ + "query": "EXPLAIN FORMAT=TREE SELECT * FROM db", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "EXPLAIN FORMAT=TREE SELECT * FROM db", + "len": 36, + "last": 36, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORMAT", + "value": "FORMAT", + "keyword": "FORMAT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TREE", + "value": "TREE", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "db", + "value": "db", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "db", + "column": null, + "expr": "db", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "statementAlias": "EXPLAIN", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "FORMAT", + "equals": true, + "expr": "TREE", + "value": "TREE" + } + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain5.in b/tests/data/parser/parseExplain5.in new file mode 100644 index 000000000..9af50c83f --- /dev/null +++ b/tests/data/parser/parseExplain5.in @@ -0,0 +1 @@ +DESC phpmyadmin.pma__users; \ No newline at end of file diff --git a/tests/data/parser/parseExplain5.out b/tests/data/parser/parseExplain5.out new file mode 100644 index 000000000..7cc1b5e8a --- /dev/null +++ b/tests/data/parser/parseExplain5.out @@ -0,0 +1,134 @@ +{ + "query": "DESC phpmyadmin.pma__users;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESC phpmyadmin.pma__users;", + "len": 27, + "last": 27, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 7, + "idx": 7, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "phpmyadmin", + "value": "phpmyadmin", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma__users", + "value": "pma__users", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "DESC", + "connectionId": null, + "explainedDatabase": "phpmyadmin", + "explainedTable": "pma__users", + "explainedColumn": null, + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain6.in b/tests/data/parser/parseExplain6.in new file mode 100644 index 000000000..7d41c2477 --- /dev/null +++ b/tests/data/parser/parseExplain6.in @@ -0,0 +1 @@ +DESCRIBE Shop 'N%'; diff --git a/tests/data/parser/parseExplain6.out b/tests/data/parser/parseExplain6.out new file mode 100644 index 000000000..2795663f4 --- /dev/null +++ b/tests/data/parser/parseExplain6.out @@ -0,0 +1,145 @@ +{ + "query": "DESCRIBE Shop 'N%';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESCRIBE Shop 'N%';\n", + "len": 20, + "last": 20, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESCRIBE", + "value": "DESCRIBE", + "keyword": "DESCRIBE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Shop", + "value": "Shop", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'N%'", + "value": "N%", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "DESCRIBE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": "Shop", + "explainedColumn": "N%", + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain7.in b/tests/data/parser/parseExplain7.in new file mode 100644 index 000000000..67cc60854 --- /dev/null +++ b/tests/data/parser/parseExplain7.in @@ -0,0 +1 @@ +DESCRIBE Shop 'Name'; \ No newline at end of file diff --git a/tests/data/parser/parseExplain7.out b/tests/data/parser/parseExplain7.out new file mode 100644 index 000000000..0a66a054b --- /dev/null +++ b/tests/data/parser/parseExplain7.out @@ -0,0 +1,134 @@ +{ + "query": "DESCRIBE Shop 'Name';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESCRIBE Shop 'Name';", + "len": 21, + "last": 21, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 7, + "idx": 7, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESCRIBE", + "value": "DESCRIBE", + "keyword": "DESCRIBE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Shop", + "value": "Shop", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Name'", + "value": "Name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "DESCRIBE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": "Shop", + "explainedColumn": "Name", + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain8.in b/tests/data/parser/parseExplain8.in new file mode 100644 index 000000000..268ac4b90 --- /dev/null +++ b/tests/data/parser/parseExplain8.in @@ -0,0 +1 @@ +DESCRIBE Shop N__e; \ No newline at end of file diff --git a/tests/data/parser/parseExplain8.out b/tests/data/parser/parseExplain8.out new file mode 100644 index 000000000..ec8e2f050 --- /dev/null +++ b/tests/data/parser/parseExplain8.out @@ -0,0 +1,132 @@ +{ + "query": "DESCRIBE Shop N__e;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESCRIBE Shop N__e;", + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 7, + "idx": 7, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESCRIBE", + "value": "DESCRIBE", + "keyword": "DESCRIBE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Shop", + "value": "Shop", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "N__e", + "value": "N__e", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "DESCRIBE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": "Shop", + "explainedColumn": "N__e", + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplain9.in b/tests/data/parser/parseExplain9.in new file mode 100644 index 000000000..a0a58e867 --- /dev/null +++ b/tests/data/parser/parseExplain9.in @@ -0,0 +1 @@ +DESCRIBE tablename 581 \ No newline at end of file diff --git a/tests/data/parser/parseExplain9.out b/tests/data/parser/parseExplain9.out new file mode 100644 index 000000000..a830bcd31 --- /dev/null +++ b/tests/data/parser/parseExplain9.out @@ -0,0 +1,123 @@ +{ + "query": "DESCRIBE tablename 581", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DESCRIBE tablename 581", + "len": 22, + "last": 22, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESCRIBE", + "value": "DESCRIBE", + "keyword": "DESCRIBE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "581", + "value": 581, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "DESCRIBE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": "tablename", + "explainedColumn": "581", + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr.in b/tests/data/parser/parseExplainErr.in new file mode 100644 index 000000000..4daa3884a --- /dev/null +++ b/tests/data/parser/parseExplainErr.in @@ -0,0 +1 @@ +EXPLAIN FOR SELECT * \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr.out b/tests/data/parser/parseExplainErr.out new file mode 100644 index 000000000..12895f5f5 --- /dev/null +++ b/tests/data/parser/parseExplainErr.out @@ -0,0 +1,189 @@ +{ + "query": "EXPLAIN FOR SELECT *", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "EXPLAIN FOR SELECT *", + "len": 20, + "last": 20, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 1, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "EXPLAIN", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 3, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr1.in b/tests/data/parser/parseExplainErr1.in new file mode 100644 index 000000000..fc35a840d --- /dev/null +++ b/tests/data/parser/parseExplainErr1.in @@ -0,0 +1 @@ +ANALYZE SELECT FROM \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr1.out b/tests/data/parser/parseExplainErr1.out new file mode 100644 index 000000000..d9ab8bbc9 --- /dev/null +++ b/tests/data/parser/parseExplainErr1.out @@ -0,0 +1,215 @@ +{ + "query": "ANALYZE SELECT FROM", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "ANALYZE SELECT FROM", + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 7, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Exceptions\\ParserException", + "token": { + "@type": "@8" + }, + "message": "An expression was expected.", + "code": 0, + "file": "/src/Parser.php", + "line": 619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Exceptions\\ParserException", + "token": { + "@type": "@9" + }, + "message": "An expression was expected.", + "code": 0, + "file": "/src/Parser.php", + "line": 619 + } + ], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "@6" + }, + { + "@type": "@7" + }, + { + "@type": "@8" + }, + { + "@type": "@9" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + } + ], + "brackets": 0 + }, + "statementAlias": "ANALYZE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@8" + }, + 0 + ], + [ + "An expression was expected.", + { + "@type": "@9" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr2.in b/tests/data/parser/parseExplainErr2.in new file mode 100644 index 000000000..9cddce5c9 --- /dev/null +++ b/tests/data/parser/parseExplainErr2.in @@ -0,0 +1 @@ +EXPLAIN ANALYZE FROM TABLE \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr2.out b/tests/data/parser/parseExplainErr2.out new file mode 100644 index 000000000..3d120b466 --- /dev/null +++ b/tests/data/parser/parseExplainErr2.out @@ -0,0 +1,159 @@ +{ + "query": "EXPLAIN ANALYZE FROM TABLE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "EXPLAIN ANALYZE FROM TABLE", + "len": 26, + "last": 26, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ANALYZE", + "value": "ANALYZE", + "keyword": "ANALYZE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "EXPLAIN ANALYZE", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr3.in b/tests/data/parser/parseExplainErr3.in new file mode 100644 index 000000000..53a50d5a9 --- /dev/null +++ b/tests/data/parser/parseExplainErr3.in @@ -0,0 +1 @@ +EXPLAIN \ No newline at end of file diff --git a/tests/data/parser/parseExplainErr3.out b/tests/data/parser/parseExplainErr3.out new file mode 100644 index 000000000..547269fff --- /dev/null +++ b/tests/data/parser/parseExplainErr3.out @@ -0,0 +1,94 @@ +{ + "query": "EXPLAIN ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "EXPLAIN ", + "len": 8, + "last": 8, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 3, + "idx": 3, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "bodyParser": null, + "statementAlias": "EXPLAIN", + "connectionId": null, + "explainedDatabase": null, + "explainedTable": null, + "explainedColumn": null, + "options": null, + "first": 0, + "last": 1 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Expected a table name.", + { + "@type": "@4" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsert.out b/tests/data/parser/parseInsert.out index f968f0796..67d7a3649 100644 --- a/tests/data/parser/parseInsert.out +++ b/tests/data/parser/parseInsert.out @@ -1,16 +1,568 @@ -a:4:{s:5:"query";s:176:"INSERT LOW_PRIORITY -INTO - users(`id`, `username`, `password`) -VALUES - (1, "Dan", "5d41402abc4b2a76b9719d911017c592"), - (2, "Paul", "7d793037a0760186574b0282f2f435e7");";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:176:"INSERT LOW_PRIORITY -INTO - users(`id`, `username`, `password`) -VALUES - (1, "Dan", "5d41402abc4b2a76b9719d911017c592"), - (2, "Paul", "7d793037a0760186574b0282f2f435e7");";s:3:"len";i:176;s:4:"last";i:176;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:41:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:29;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:35;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:39;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`username`";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"`password`";s:5:"value";s:8:"password";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:53;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:63;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:65;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:76;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:77;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:78;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:""Dan"";s:5:"value";s:3:"Dan";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:80;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:85;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:34:""5d41402abc4b2a76b9719d911017c592"";s:5:"value";s:32:"5d41402abc4b2a76b9719d911017c592";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:87;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:121;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:122;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:123;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:128;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:129;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:130;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Paul"";s:5:"value";s:4:"Paul";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:132;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:138;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:34:""7d793037a0760186574b0282f2f435e7"";s:5:"value";s:32:"7d793037a0760186574b0282f2f435e7";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:140;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:174;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:175;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:41;s:3:"idx";i:41;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:3:{i:0;s:2:"id";i:1;s:8:"username";i:2;s:8:"password";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";a:2:{i:0;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:3:{i:0;s:1:"1";i:1;s:5:""Dan"";i:2;s:34:""5d41402abc4b2a76b9719d911017c592"";}s:6:"values";a:3:{i:0;s:1:"1";i:1;s:3:"Dan";i:2;s:32:"5d41402abc4b2a76b9719d911017c592";}}i:1;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:3:{i:0;s:1:"2";i:1;s:6:""Paul"";i:2;s:34:""7d793037a0760186574b0282f2f435e7"";}s:6:"values";a:3:{i:0;s:1:"2";i:1;s:4:"Paul";i:2;s:32:"7d793037a0760186574b0282f2f435e7";}}}s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:12:"LOW_PRIORITY";}}s:5:"first";i:0;s:4:"last";i:38;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "INSERT LOW_PRIORITY\nINTO\n users(`id`, `username`, `password`)\nVALUES\n (1, \"Dan\", \"5d41402abc4b2a76b9719d911017c592\"),\n (2, \"Paul\", \"7d793037a0760186574b0282f2f435e7\");", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 41, + "idx": 41, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`username`", + "value": "username", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`password`", + "value": "password", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 2, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"5d41402abc4b2a76b9719d911017c592\"", + "value": "5d41402abc4b2a76b9719d911017c592", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Paul\"", + "value": "Paul", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 2, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"7d793037a0760186574b0282f2f435e7\"", + "value": "7d793037a0760186574b0282f2f435e7", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@49" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "username", + "password" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": 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, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 38 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertErr.out b/tests/data/parser/parseInsertErr.out index d76c1f518..e2369dcb2 100644 --- a/tests/data/parser/parseInsertErr.out +++ b/tests/data/parser/parseInsertErr.out @@ -1,4 +1,150 @@ -a:4:{s:5:"query";s:14:"INSERT SELECT -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:14:"INSERT SELECT -";s:3:"len";i:14;s:4:"last";i:14;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:2:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";N;s:6:"values";N;s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:1;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:0:{}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:2;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:23;i:2;i:0;}i:1;a:3:{i:0;s:27:"An expression was expected.";i:1;r:37;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "INSERT SELECT\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT SELECT\n", + "len": 14, + "last": 14, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": null, + "values": null, + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 2, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@6" + }, + 0 + ], + [ + "An expression was expected.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertErr2.out b/tests/data/parser/parseInsertErr2.out index 1a5ed1f2c..5ee4e61b2 100644 --- a/tests/data/parser/parseInsertErr2.out +++ b/tests/data/parser/parseInsertErr2.out @@ -1,7 +1,190 @@ -a:4:{s:5:"query";s:24:"INSERT INTO x "string" - -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:24:"INSERT INTO x "string" - -";s:3:"len";i:24;s:4:"last";i:24;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"x";s:5:"value";s:1:"x";s:7:"keyword";s:1:"X";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:""string"";s:5:"value";s:6:"string";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"x";s:6:"column";N;s:4:"expr";s:1:"x";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";N;s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:5;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:51;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "INSERT INTO x \"string\"\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO x \"string\"\n\n", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"string\"", + "value": "string", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@10" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertFunction.in b/tests/data/parser/parseInsertFunction.in new file mode 100644 index 000000000..5958daf08 --- /dev/null +++ b/tests/data/parser/parseInsertFunction.in @@ -0,0 +1,2 @@ +INSERT INTO labels(`label`) +VALUES (concat('A', ' ', 'label')); \ No newline at end of file diff --git a/tests/data/parser/parseInsertFunction.out b/tests/data/parser/parseInsertFunction.out new file mode 100644 index 000000000..b32ce07f2 --- /dev/null +++ b/tests/data/parser/parseInsertFunction.out @@ -0,0 +1,369 @@ +{ + "query": "INSERT INTO labels(`label`)\nVALUES (concat('A', ' ', 'label'));", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO labels(`label`)\nVALUES (concat('A', ' ', 'label'));", + "len": 63, + "last": 63, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "labels", + "value": "labels", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`label`", + "value": "label", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "concat", + "value": "concat", + "keyword": "CONCAT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'A'", + "value": "A", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "' '", + "value": " ", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'label'", + "value": "label", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@32" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "labels", + "column": null, + "expr": "labels", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "label" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "concat('A', ' ', 'label')" + ], + "values": [ + "concat(A, , label)" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertIntoErr.out b/tests/data/parser/parseInsertIntoErr.out index 0ea0c02e3..91576fa61 100644 --- a/tests/data/parser/parseInsertIntoErr.out +++ b/tests/data/parser/parseInsertIntoErr.out @@ -1,7 +1,196 @@ -a:4:{s:5:"query";s:22:"INSERT INTO x INSERT - -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:22:"INSERT INTO x INSERT - -";s:3:"len";i:22;s:4:"last";i:22;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"x";s:5:"value";s:1:"x";s:7:"keyword";s:1:"X";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:2:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"x";s:6:"column";N;s:4:"expr";s:1:"x";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";N;s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:5;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";N;s:6:"values";N;s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:6;s:4:"last";i:7;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "INSERT INTO x INSERT\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO x INSERT\n\n", + "len": 22, + "last": 22, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": null, + "values": null, + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 6, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertIntoSet.in b/tests/data/parser/parseInsertIntoSet.in new file mode 100644 index 000000000..a9788ae69 --- /dev/null +++ b/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/tests/data/parser/parseInsertIntoSet.out b/tests/data/parser/parseInsertIntoSet.out new file mode 100644 index 000000000..1f4164d4e --- /dev/null +++ b/tests/data/parser/parseInsertIntoSet.out @@ -0,0 +1,251 @@ +{ + "query": "INSERT INTO aa SET = INET6_ATON('::ffff:8.8.8.8')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO aa SET = INET6_ATON('::ffff:8.8.8.8')", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aa", + "value": "aa", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INET6_ATON", + "value": "INET6_ATON", + "keyword": "INET6_ATON", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'::ffff:8.8.8.8'", + "value": "::ffff:8.8.8.8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "aa", + "column": null, + "expr": "aa", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "", + "value": "INET6_ATON('::ffff:8.8.8.8')" + } + ], + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertOnDuplicateKey.out b/tests/data/parser/parseInsertOnDuplicateKey.out index 024693c68..c50bcd15d 100644 --- a/tests/data/parser/parseInsertOnDuplicateKey.out +++ b/tests/data/parser/parseInsertOnDuplicateKey.out @@ -1,4 +1,504 @@ -a:4:{s:5:"query";s:103:"INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') -ON DUPLICATE KEY UPDATE `id`=412,`val`='Thresh'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:103:"INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') -ON DUPLICATE KEY UPDATE `id`=412,`val`='Thresh'";s:3:"len";i:103;s:4:"last";i:103;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:36:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`champs`";s:5:"value";s:6:"champs";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`val`";s:5:"value";s:3:"val";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"412";s:5:"value";i:412;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'Thresh'";s:5:"value";s:6:"Thresh";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:54;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DUPLICATE";s:5:"value";s:9:"DUPLICATE";s:7:"keyword";s:9:"DUPLICATE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:59;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:69;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:80;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:84;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"412";s:5:"value";i:412;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:85;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`val`";s:5:"value";s:3:"val";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:89;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'Thresh'";s:5:"value";s:6:"Thresh";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:36;s:3:"idx";i:36;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"champs";s:6:"column";N;s:4:"expr";s:8:"`champs`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:2:{i:0;s:2:"id";i:1;s:3:"val";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";a:1:{i:0;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:3:"412";i:1;s:8:"'Thresh'";}s:6:"values";a:2:{i:0;s:3:"412";i:1;s:6:"Thresh";}}}s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:4:"`id`";s:5:"value";s:3:"412";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:5:"`val`";s:5:"value";s:8:"'Thresh'";}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:34;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh')\nON DUPLICATE KEY UPDATE `id`=412,`val`='Thresh'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 36, + "idx": 36, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`champs`", + "value": "champs", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 1, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "champs", + "column": null, + "expr": "`champs`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "val" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "412", + "'Thresh'" + ], + "values": [ + "412", + "Thresh" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`id`", + "value": "412" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`val`", + "value": "'Thresh'" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 34 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertOnDuplicateKeyErr.out b/tests/data/parser/parseInsertOnDuplicateKeyErr.out index a76c5cdd0..c44a18842 100644 --- a/tests/data/parser/parseInsertOnDuplicateKeyErr.out +++ b/tests/data/parser/parseInsertOnDuplicateKeyErr.out @@ -1,4 +1,507 @@ -a:4:{s:5:"query";s:96:"INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') -ON DUPLICATE KEY `id`=412,`val`='Thresh'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:96:"INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') -ON DUPLICATE KEY `id`=412,`val`='Thresh'";s:3:"len";i:96;s:4:"last";i:96;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:34:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"`champs`";s:5:"value";s:6:"champs";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`val`";s:5:"value";s:3:"val";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"412";s:5:"value";i:412;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'Thresh'";s:5:"value";s:6:"Thresh";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:54;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DUPLICATE";s:5:"value";s:9:"DUPLICATE";s:7:"keyword";s:9:"DUPLICATE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:59;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:69;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`id`";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:73;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:77;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"412";s:5:"value";i:412;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:78;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:81;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"`val`";s:5:"value";s:3:"val";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:82;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:87;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"'Thresh'";s:5:"value";s:6:"Thresh";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:88;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:34;s:3:"idx";i:34;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"champs";s:6:"column";N;s:4:"expr";s:8:"`champs`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:2:{i:0;s:2:"id";i:1;s:3:"val";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";a:1:{i:0;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:3:"412";i:1;s:8:"'Thresh'";}s:6:"values";a:2:{i:0;s:3:"412";i:1;s:6:"Thresh";}}}s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:25;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:5:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:191;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:191;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:205;i:2;i:0;}i:3;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:219;i:2;i:0;}i:4;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:233;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh')\nON DUPLICATE KEY `id`=412,`val`='Thresh'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`champs`", + "value": "champs", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 1, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "champs", + "column": null, + "expr": "`champs`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "val" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "412", + "'Thresh'" + ], + "values": [ + "412", + "Thresh" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@34" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@34" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@36" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@38" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@40" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertSelect.out b/tests/data/parser/parseInsertSelect.out index d7e045f07..af65d831a 100644 --- a/tests/data/parser/parseInsertSelect.out +++ b/tests/data/parser/parseInsertSelect.out @@ -1 +1,345 @@ -a:4:{s:5:"query";s:53:"INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b`";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:53:"INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b`";s:3:"len";i:53;s:4:"last";i:53;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:20:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:16;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`b`";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:36;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:37;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`b`";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:50;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:20;s:3:"idx";i:20;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:3:"`a`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:5:"value";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"b";s:6:"column";s:5:"value";s:4:"expr";s:11:"`b`.`value`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"b";s:6:"column";N;s:4:"expr";s:3:"`b`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:10;s:4:"last";i:18;}s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:18;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b`", + "len": 53, + "last": 53, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "b", + "column": "value", + "expr": "`b`.`value`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "b", + "column": null, + "expr": "`b`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 10, + "last": 18 + }, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertSelectOnDuplicateKey.out b/tests/data/parser/parseInsertSelectOnDuplicateKey.out index 70f03215c..4143bd227 100644 --- a/tests/data/parser/parseInsertSelectOnDuplicateKey.out +++ b/tests/data/parser/parseInsertSelectOnDuplicateKey.out @@ -1 +1,439 @@ -a:4:{s:5:"query";s:65:"INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:65:"INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1";s:3:"len";i:65;s:4:"last";i:65;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:28:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"tbl";s:5:"value";s:3:"tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:16;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:23;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:34;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DUPLICATE";s:5:"value";s:9:"DUPLICATE";s:7:"keyword";s:9:"DUPLICATE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:37;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:51;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"baz";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:58;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:62;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:64;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:28;s:3:"idx";i:28;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"tbl";s:6:"column";N;s:4:"expr";s:3:"tbl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";N;s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"bar";s:6:"column";N;s:4:"expr";s:3:"bar";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:6;s:4:"last";i:13;}s:14:"onDuplicateSet";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:3:"baz";s:5:"value";s:1:"1";}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:26;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1", + "len": 65, + "last": 65, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 28, + "idx": 28, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": null, + "expr": "tbl", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 6, + "last": 13 + }, + "with": null, + "onDuplicateSet": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "baz", + "value": "1" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertSet.out b/tests/data/parser/parseInsertSet.out index 15a90dc7f..7f639358f 100644 --- a/tests/data/parser/parseInsertSet.out +++ b/tests/data/parser/parseInsertSet.out @@ -1 +1,286 @@ -a:4:{s:5:"query";s:45:"INSERT INTO `a` (`value`) SET `value` = '123'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:45:"INSERT INTO `a` (`value`) SET `value` = '123'";s:3:"len";i:45;s:4:"last";i:45;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:16;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:26;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'123'";s:5:"value";s:3:"123";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:40;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:18;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:3:"`a`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:5:"value";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:7:"`value`";s:5:"value";s:5:"'123'";}}s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "INSERT INTO `a` (`value`) SET `value` = '123'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO `a` (`value`) SET `value` = '123'", + "len": 45, + "last": 45, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`value`", + "value": "'123'" + } + ], + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseInsertSetOnDuplicateKey.out b/tests/data/parser/parseInsertSetOnDuplicateKey.out index e0413ce98..36d2a1e6d 100644 --- a/tests/data/parser/parseInsertSetOnDuplicateKey.out +++ b/tests/data/parser/parseInsertSetOnDuplicateKey.out @@ -1 +1,446 @@ -a:4:{s:5:"query";s:86:"INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:86:"INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234'";s:3:"len";i:86;s:4:"last";i:86;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:32:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:16;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:26;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'123'";s:5:"value";s:3:"123";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:40;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"DUPLICATE";s:5:"value";s:9:"DUPLICATE";s:7:"keyword";s:9:"DUPLICATE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:49;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:59;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:63;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:70;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:78;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'1234'";s:5:"value";s:4:"1234";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:80;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:32;s:3:"idx";i:32;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:3:"`a`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:5:"value";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:7:"`value`";s:5:"value";s:5:"'123'";}}s:6:"select";N;s:14:"onDuplicateSet";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:7:"`value`";s:5:"value";s:6:"'1234'";}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:30;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234'", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 32, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'1234'", + "value": "1234", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 1, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`value`", + "value": "'123'" + } + ], + "select": null, + "with": null, + "onDuplicateSet": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`value`", + "value": "'1234'" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKill.in b/tests/data/parser/parseKill.in new file mode 100644 index 000000000..a19d01f1a --- /dev/null +++ b/tests/data/parser/parseKill.in @@ -0,0 +1 @@ +KILL 1 \ No newline at end of file diff --git a/tests/data/parser/parseKill.out b/tests/data/parser/parseKill.out new file mode 100644 index 000000000..aad68bf64 --- /dev/null +++ b/tests/data/parser/parseKill.out @@ -0,0 +1,99 @@ +{ + "query": "KILL 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL 1", + "len": 6, + "last": 6, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 4, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": 1, + "idKeywordUsed": false, + "parenthesisUsed": false, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKill2.in b/tests/data/parser/parseKill2.in new file mode 100644 index 000000000..ff8653ef8 --- /dev/null +++ b/tests/data/parser/parseKill2.in @@ -0,0 +1 @@ +KILL (SELECT 3 + 4) \ No newline at end of file diff --git a/tests/data/parser/parseKill2.out b/tests/data/parser/parseKill2.out new file mode 100644 index 000000000..d5879369a --- /dev/null +++ b/tests/data/parser/parseKill2.out @@ -0,0 +1,223 @@ +{ + "query": "KILL (SELECT 3 + 4)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL (SELECT 3 + 4)", + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "3 + 4", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 8 + }, + "idKeywordUsed": false, + "parenthesisUsed": true, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKill3.in b/tests/data/parser/parseKill3.in new file mode 100644 index 000000000..dc834b146 --- /dev/null +++ b/tests/data/parser/parseKill3.in @@ -0,0 +1 @@ +KILL QUERY ID 10 \ No newline at end of file diff --git a/tests/data/parser/parseKill3.out b/tests/data/parser/parseKill3.out new file mode 100644 index 000000000..f47393454 --- /dev/null +++ b/tests/data/parser/parseKill3.out @@ -0,0 +1,147 @@ +{ + "query": "KILL QUERY ID 10", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL QUERY ID 10", + "len": 16, + "last": 16, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUERY", + "value": "QUERY", + "keyword": "QUERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": 10, + "idKeywordUsed": true, + "parenthesisUsed": false, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUERY" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKillConnection.in b/tests/data/parser/parseKillConnection.in new file mode 100644 index 000000000..cbe01e0ff --- /dev/null +++ b/tests/data/parser/parseKillConnection.in @@ -0,0 +1 @@ +KILL CONNECTION 1 \ No newline at end of file diff --git a/tests/data/parser/parseKillConnection.out b/tests/data/parser/parseKillConnection.out new file mode 100644 index 000000000..d130b148c --- /dev/null +++ b/tests/data/parser/parseKillConnection.out @@ -0,0 +1,123 @@ +{ + "query": "KILL CONNECTION 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL CONNECTION 1", + "len": 17, + "last": 17, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONNECTION", + "value": "CONNECTION", + "keyword": "CONNECTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": 1, + "idKeywordUsed": false, + "parenthesisUsed": false, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "CONNECTION" + } + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKillErr1.in b/tests/data/parser/parseKillErr1.in new file mode 100644 index 000000000..79fae152d --- /dev/null +++ b/tests/data/parser/parseKillErr1.in @@ -0,0 +1 @@ +KILL CONNECTION QUERY 1 \ No newline at end of file diff --git a/tests/data/parser/parseKillErr1.out b/tests/data/parser/parseKillErr1.out new file mode 100644 index 000000000..b0217f78c --- /dev/null +++ b/tests/data/parser/parseKillErr1.out @@ -0,0 +1,154 @@ +{ + "query": "KILL CONNECTION QUERY 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL CONNECTION QUERY 1", + "len": 23, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONNECTION", + "value": "CONNECTION", + "keyword": "CONNECTION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUERY", + "value": "QUERY", + "keyword": "QUERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": 1, + "idKeywordUsed": false, + "parenthesisUsed": false, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "CONNECTION", + "6": "QUERY" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"CONNECTION\".", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKillErr2.in b/tests/data/parser/parseKillErr2.in new file mode 100644 index 000000000..4551c2f17 --- /dev/null +++ b/tests/data/parser/parseKillErr2.in @@ -0,0 +1 @@ +KILL \ No newline at end of file diff --git a/tests/data/parser/parseKillErr2.out b/tests/data/parser/parseKillErr2.out new file mode 100644 index 000000000..c290a17c2 --- /dev/null +++ b/tests/data/parser/parseKillErr2.out @@ -0,0 +1,88 @@ +{ + "query": "KILL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL", + "len": 4, + "last": 4, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 2, + "idx": 2, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": null, + "idKeywordUsed": false, + "parenthesisUsed": false, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@4" + }, + 0 + ], + [ + "Unexpected end of the KILL statement.", + { + "@type": "@4" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKillErr3.in b/tests/data/parser/parseKillErr3.in new file mode 100644 index 000000000..f2bdc0e22 --- /dev/null +++ b/tests/data/parser/parseKillErr3.in @@ -0,0 +1 @@ +KILL (SELECT) \ No newline at end of file diff --git a/tests/data/parser/parseKillErr3.out b/tests/data/parser/parseKillErr3.out new file mode 100644 index 000000000..fbeb3d3b2 --- /dev/null +++ b/tests/data/parser/parseKillErr3.out @@ -0,0 +1,129 @@ +{ + "query": "KILL (SELECT)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL (SELECT)", + "len": 13, + "last": 13, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": null, + "idKeywordUsed": false, + "parenthesisUsed": true, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@9" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKillErr4.in b/tests/data/parser/parseKillErr4.in new file mode 100644 index 000000000..6ee8db58d --- /dev/null +++ b/tests/data/parser/parseKillErr4.in @@ -0,0 +1 @@ +KILL (INSERT) \ No newline at end of file diff --git a/tests/data/parser/parseKillErr4.out b/tests/data/parser/parseKillErr4.out new file mode 100644 index 000000000..6f72495e2 --- /dev/null +++ b/tests/data/parser/parseKillErr4.out @@ -0,0 +1,160 @@ +{ + "query": "KILL (INSERT)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL (INSERT)", + "len": 13, + "last": 13, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": null, + "idKeywordUsed": false, + "parenthesisUsed": true, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": null, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 3, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected end of the KILL statement.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseKillQuery.in b/tests/data/parser/parseKillQuery.in new file mode 100644 index 000000000..1bab1d421 --- /dev/null +++ b/tests/data/parser/parseKillQuery.in @@ -0,0 +1 @@ +KILL QUERY 1 \ No newline at end of file diff --git a/tests/data/parser/parseKillQuery.out b/tests/data/parser/parseKillQuery.out new file mode 100644 index 000000000..f5a4efed7 --- /dev/null +++ b/tests/data/parser/parseKillQuery.out @@ -0,0 +1,123 @@ +{ + "query": "KILL QUERY 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "KILL QUERY 1", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KILL", + "value": "KILL", + "keyword": "KILL", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUERY", + "value": "QUERY", + "keyword": "QUERY", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\KillStatement", + "identifier": 1, + "idKeywordUsed": false, + "parenthesisUsed": false, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUERY" + } + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLimitErr1.out b/tests/data/parser/parseLimitErr1.out index c27ebf70d..ae4729209 100644 --- a/tests/data/parser/parseLimitErr1.out +++ b/tests/data/parser/parseLimitErr1.out @@ -1 +1,314 @@ -a:4:{s:5:"query";s:43:"SELECT * FROM test LIMIT 1 OFFSET OFFSET 2;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:43:"SELECT * FROM test LIMIT 1 OFFSET OFFSET 2;";s:3:"len";i:43;s:4:"last";i:43;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:19:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:25;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"OFFSET";s:5:"value";s:6:"OFFSET";s:7:"keyword";s:6:"OFFSET";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:27;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"OFFSET";s:5:"value";s:6:"OFFSET";s:7:"keyword";s:6:"OFFSET";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:34;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:41;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:42;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:19;s:3:"idx";i:19;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:2;s:8:"rowCount";i:1;}s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:23:"An offset was expected.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT * FROM test LIMIT 1 OFFSET OFFSET 2;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM test LIMIT 1 OFFSET OFFSET 2;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 19, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 1 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An offset was expected.", + { + "@type": "@21" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLimitErr2.out b/tests/data/parser/parseLimitErr2.out index 35f927560..e44cfccc0 100644 --- a/tests/data/parser/parseLimitErr2.out +++ b/tests/data/parser/parseLimitErr2.out @@ -1 +1,259 @@ -a:4:{s:5:"query";s:33:"SELECT * FROM test LIMIT 1 OFFSET";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:33:"SELECT * FROM test LIMIT 1 OFFSET";s:3:"len";i:33;s:4:"last";i:33;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:14:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:25;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"OFFSET";s:5:"value";s:6:"OFFSET";s:7:"keyword";s:6:"OFFSET";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:27;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:14;s:3:"idx";i:14;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:0;s:8:"rowCount";i:1;}s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:12;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:23:"An offset was expected.";i:1;r:93;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT * FROM test LIMIT 1 OFFSET", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM test LIMIT 1 OFFSET", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 1 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 12 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An offset was expected.", + { + "@type": "@19" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad1.out b/tests/data/parser/parseLoad1.out index 52f876206..b78d96d19 100644 --- a/tests/data/parser/parseLoad1.out +++ b/tests/data/parser/parseLoad1.out @@ -1 +1,252 @@ -a:4:{s:5:"query";s:64:"LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:64:"LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;";s:3:"len";i:64;s:4:"last";i:64;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONCURRENT";s:5:"value";s:10:"CONCURRENT";s:7:"keyword";s:10:"CONCURRENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee1.txt'";s:5:"value";s:13:"employee1.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:28;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:44;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:49;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:55;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:63;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'employee1.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"employee1.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"employee";s:6:"column";N;s:4:"expr";s:8:"employee";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:10:"CONCURRENT";}}s:5:"first";i:0;s:4:"last";i:12;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;", + "len": 64, + "last": 64, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCURRENT", + "value": "CONCURRENT", + "keyword": "CONCURRENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee1.txt'", + "value": "employee1.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "'employee1.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "employee1.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "employee", + "column": null, + "expr": "employee", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": null, + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONCURRENT" + } + }, + "first": 0, + "last": 12 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad2.out b/tests/data/parser/parseLoad2.out index 9cfdb39af..cfa99f86c 100644 --- a/tests/data/parser/parseLoad2.out +++ b/tests/data/parser/parseLoad2.out @@ -1 +1,390 @@ -a:4:{s:5:"query";s:89:"LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:89:"LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;";s:3:"len";i:89;s:4:"last";i:89;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:25:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:38;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"FIELDS";s:5:"value";s:6:"FIELDS";s:7:"keyword";s:6:"FIELDS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:49;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:56;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:70;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:73;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:74;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:81;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:83;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:88;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:25;s:3:"idx";i:25;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:6:"FIELDS";s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";N;s:10:"lines_rows";s:5:"LINES";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:23;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIELDS", + "value": "FIELDS", + "keyword": "FIELDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fieldsKeyword": "FIELDS", + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replaceIgnore": null, + "linesRows": "LINES", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad3.out b/tests/data/parser/parseLoad3.out index e7fbdf506..eee5e82cc 100644 --- a/tests/data/parser/parseLoad3.out +++ b/tests/data/parser/parseLoad3.out @@ -1 +1,372 @@ -a:4:{s:5:"query";s:94:"LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '"';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:94:"LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '"';";s:3:"len";i:94;s:4:"last";i:94;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee3.txt'";s:5:"value";s:13:"employee3.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:38;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"FIELDS";s:5:"value";s:6:"FIELDS";s:7:"keyword";s:6:"FIELDS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:53;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:60;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:73;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:74;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:77;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"ENCLOSED BY";s:5:"value";s:11:"ENCLOSED BY";s:7:"keyword";s:11:"ENCLOSED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:78;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"'"'";s:5:"value";s:1:""";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:90;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:93;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:23;s:3:"idx";i:23;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'employee3.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"employee3.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"employee";s:6:"column";N;s:4:"expr";s:8:"employee";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}i:3;a:4:{s:4:"name";s:11:"ENCLOSED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:""";s:4:"expr";s:3:"'"'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"'"'";}}}s:14:"fields_keyword";s:6:"FIELDS";s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:20;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '\"';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '\"';", + "len": 94, + "last": 94, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee3.txt'", + "value": "employee3.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIELDS", + "value": "FIELDS", + "keyword": "FIELDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\"'", + "value": "\"", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "'employee3.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "employee3.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "employee", + "column": null, + "expr": "employee", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": "\"", + "expr": "'\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\"'" + } + } + }, + "fieldsKeyword": "FIELDS", + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": null, + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad4.out b/tests/data/parser/parseLoad4.out index f0ba147c5..e9baf6735 100644 --- a/tests/data/parser/parseLoad4.out +++ b/tests/data/parser/parseLoad4.out @@ -1,22 +1,736 @@ -a:4:{s:5:"query";s:166:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:166:"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;";s:3:"len";i:166;s:4:"last";i:166;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:52:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:56;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:70;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:77;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:85;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:99;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:103;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:108;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:109;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:122;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"';'";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:123;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:126;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:127;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:133;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:134;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:135;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:136;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:141;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:142;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col1";s:5:"value";s:4:"col1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:143;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:147;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col2";s:5:"value";s:4:"col2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:149;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:153;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:154;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:155;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:158;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:159;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:161;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:162;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:163;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:164;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:165;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:52;s:3:"idx";i:52;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"utf8";s:4:"expr";s:6:"'utf8'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:7:"COLUMNS";s:13:"lines_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:";";s:4:"expr";s:3:"';'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"';'";}}}s:20:"col_name_or_user_var";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:12:"(col1, col2)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"@a";s:5:"value";s:1:"1";}}s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";s:5:"LINES";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:49;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 52, + "idx": 52, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "';'", + "value": ";", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@44" + }, + "flags": 16, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col2", + "value": "col2", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@44" + }, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@44" + }, + "flags": 2, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@60" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "utf8", + "expr": "'utf8'", + "alias": null, + "function": null, + "subquery": null + }, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fieldsKeyword": "COLUMNS", + "linesOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": ";", + "expr": "';'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "';'" + } + } + }, + "columnNamesOrUserVariables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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" + } + ], + "ignoreNumber": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replaceIgnore": "IGNORE", + "linesRows": "LINES", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad5.out b/tests/data/parser/parseLoad5.out index 66753ed14..731307e82 100644 --- a/tests/data/parser/parseLoad5.out +++ b/tests/data/parser/parseLoad5.out @@ -1 +1,412 @@ -a:4:{s:5:"query";s:98:"LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:98:"LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;";s:3:"len";i:98;s:4:"last";i:98;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:27:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:34;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:58;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:66;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:80;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:83;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:84;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:90;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:91;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"ROWS";s:5:"value";s:4:"ROWS";s:7:"keyword";s:4:"ROWS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:93;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:97;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:27;s:3:"idx";i:27;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:7:"COLUMNS";s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";s:7:"REPLACE";s:10:"lines_rows";s:4:"ROWS";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:25;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 27, + "idx": 27, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ROWS", + "value": "ROWS", + "keyword": "ROWS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fieldsKeyword": "COLUMNS", + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replaceIgnore": "REPLACE", + "linesRows": "ROWS", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad6.out b/tests/data/parser/parseLoad6.out index 810c77739..b4124931c 100644 --- a/tests/data/parser/parseLoad6.out +++ b/tests/data/parser/parseLoad6.out @@ -1,25 +1,880 @@ -a:4:{s:5:"query";s:189:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:189:"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;";s:3:"len";i:189;s:4:"last";i:189;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:64:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:66;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p0";s:5:"value";s:2:"p0";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:67;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:73;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p2";s:5:"value";s:2:"p2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:77;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:78;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:79;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:93;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:100;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:108;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:121;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:122;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:126;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:132;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:145;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"';'";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:146;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:149;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:150;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:156;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:157;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:158;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:159;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:164;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:165;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col1";s:5:"value";s:4:"col1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:166;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:170;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:171;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"col2";s:5:"value";s:4:"col2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:172;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:176;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:177;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:178;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:181;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:182;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:184;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:185;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:186;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:187;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:188;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:64;s:3:"idx";i:64;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:3:{i:0;s:2:"p0";i:1;s:2:"p1";i:2;s:2:"p2";}s:6:"values";a:3:{i:0;s:2:"p0";i:1;s:2:"p1";i:2;s:2:"p2";}}s:12:"charset_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"utf8";s:4:"expr";s:6:"'utf8'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}}}s:14:"fields_keyword";s:7:"COLUMNS";s:13:"lines_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:";";s:4:"expr";s:3:"';'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"';'";}}}s:20:"col_name_or_user_var";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:12:"(col1, col2)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"@a";s:5:"value";s:1:"1";}}s:13:"ignore_number";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";s:5:"LINES";s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:61;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 64, + "idx": 64, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p0", + "value": "p0", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "';'", + "value": ";", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col2", + "value": "col2", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 16, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 2, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@52" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@72" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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" + ] + }, + "charsetName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "utf8", + "expr": "'utf8'", + "alias": null, + "function": null, + "subquery": null + }, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fieldsKeyword": "COLUMNS", + "linesOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": ";", + "expr": "';'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "';'" + } + } + }, + "columnNamesOrUserVariables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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" + } + ], + "ignoreNumber": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replaceIgnore": "IGNORE", + "linesRows": "LINES", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 61 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad7.in b/tests/data/parser/parseLoad7.in new file mode 100644 index 000000000..204ee8e64 --- /dev/null +++ b/tests/data/parser/parseLoad7.in @@ -0,0 +1,4 @@ +SELECT a +into outfile '/tmp/temp.data' +fields terminated by ',' enclosed by '"' ESCAPED BY '$' +FROM sometable \ No newline at end of file diff --git a/tests/data/parser/parseLoad7.out b/tests/data/parser/parseLoad7.out new file mode 100644 index 000000000..a790638fd --- /dev/null +++ b/tests/data/parser/parseLoad7.out @@ -0,0 +1,457 @@ +{ + "query": "SELECT a\ninto outfile '/tmp/temp.data'\nfields terminated by ',' enclosed by '\"' ESCAPED BY '$'\nFROM sometable", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT a\ninto outfile '/tmp/temp.data'\nfields terminated by ',' enclosed by '\"' ESCAPED BY '$'\nFROM sometable", + "len": 109, + "last": 109, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 28, + "idx": 28, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "into", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "outfile", + "value": "OUTFILE", + "keyword": "OUTFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/temp.data'", + "value": "/tmp/temp.data", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "fields", + "value": "fields", + "keyword": "FIELDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "terminated by", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "enclosed by", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\"'", + "value": "\"", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ESCAPED BY", + "value": "ESCAPED BY", + "keyword": "ESCAPED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'$'", + "value": "$", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 1, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sometable", + "value": "sometable", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sometable", + "column": null, + "expr": "sometable", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": "OUTFILE", + "dest": "/tmp/temp.data", + "columns": null, + "values": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": "\"", + "expr": "'\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\"'" + }, + "4": { + "name": "ESCAPED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "$", + "expr": "'$'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'$'" + } + } + }, + "fieldsKeyword": true, + "linesOptions": null + }, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoad8.in b/tests/data/parser/parseLoad8.in new file mode 100644 index 000000000..46e6d2ac3 --- /dev/null +++ b/tests/data/parser/parseLoad8.in @@ -0,0 +1,8 @@ +-- Query from https://github.com/phpmyadmin/sql-parser/issues/578 +-- Issue was that Lexer detected ".e1" as number token. + +LOAD DATA LOCAL INFILE '/home/user/myloadfile.csv' +IGNORE INTO TABLE erp.e1_table +FIELDS TERMINATED BY '\t' +LINES TERMINATED BY '\n' +IGNORE 0 LINES; diff --git a/tests/data/parser/parseLoad8.out b/tests/data/parser/parseLoad8.out new file mode 100644 index 000000000..b36e7ab87 --- /dev/null +++ b/tests/data/parser/parseLoad8.out @@ -0,0 +1,602 @@ +{ + "query": "-- Query from https://github.com/phpmyadmin/sql-parser/issues/578\n-- Issue was that Lexer detected \".e1\" as number token.\n\nLOAD DATA LOCAL INFILE '/home/user/myloadfile.csv'\nIGNORE INTO TABLE erp.e1_table\nFIELDS TERMINATED BY '\\t'\nLINES TERMINATED BY '\\n'\nIGNORE 0 LINES;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- Query from https://github.com/phpmyadmin/sql-parser/issues/578\n-- Issue was that Lexer detected \".e1\" as number token.\n\nLOAD DATA LOCAL INFILE '/home/user/myloadfile.csv'\nIGNORE INTO TABLE erp.e1_table\nFIELDS TERMINATED BY '\\t'\nLINES TERMINATED BY '\\n'\nIGNORE 0 LINES;\n", + "len": 272, + "last": 272, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 42, + "idx": 42, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Query from https://github.com/phpmyadmin/sql-parser/issues/578", + "value": "-- Query from https://github.com/phpmyadmin/sql-parser/issues/578", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Issue was that Lexer detected \".e1\" as number token.", + "value": "-- Issue was that Lexer detected \".e1\" as number token.", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 4, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@9" + }, + "flags": 3, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/home/user/myloadfile.csv'", + "value": "/home/user/myloadfile.csv", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@9" + }, + "flags": 3, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@9" + }, + "flags": 3, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@9" + }, + "flags": 3, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "erp", + "value": "erp", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e1_table", + "value": "e1_table", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIELDS", + "value": "FIELDS", + "keyword": "FIELDS", + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@9" + }, + "flags": 7, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\t'", + "value": "\t", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 1, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@9" + }, + "flags": 3, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@9" + }, + "flags": 7, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\n'", + "value": "\n", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 1, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@9" + }, + "flags": 3, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@9" + }, + "flags": 3, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@49" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "'/home/user/myloadfile.csv'", + "alias": null, + "function": null, + "subquery": null, + "file": "/home/user/myloadfile.csv" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "erp", + "table": "e1_table", + "column": null, + "expr": "erp.e1_table", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "\t", + "expr": "'\\t'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\t'" + } + } + }, + "fieldsKeyword": "FIELDS", + "linesOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "\n", + "expr": "'\\n'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\n'" + } + } + }, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "0", + "alias": null, + "function": null, + "subquery": null + }, + "replaceIgnore": "IGNORE", + "linesRows": "LINES", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "LOCAL" + } + }, + "first": 0, + "last": 40 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoadErr1.out b/tests/data/parser/parseLoadErr1.out index 81fda8eed..a8d63ec10 100644 --- a/tests/data/parser/parseLoadErr1.out +++ b/tests/data/parser/parseLoadErr1.out @@ -1 +1,248 @@ -a:4:{s:5:"query";s:62:"LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:62:"LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;";s:3:"len";i:62;s:4:"last";i:62;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONCURRENT";s:5:"value";s:10:"CONCURRENT";s:7:"keyword";s:10:"CONCURRENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee1.txt'";s:5:"value";s:13:"employee1.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:61;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";N;s:5:"table";N;s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:10:"CONCURRENT";}}s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:37;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;", + "len": 62, + "last": 62, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCURRENT", + "value": "CONCURRENT", + "keyword": "CONCURRENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee1.txt'", + "value": "employee1.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": null, + "table": null, + "partition": null, + "charsetName": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": null, + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONCURRENT" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoadErr2.out b/tests/data/parser/parseLoadErr2.out index 5aa92a2ea..a4a09477b 100644 --- a/tests/data/parser/parseLoadErr2.out +++ b/tests/data/parser/parseLoadErr2.out @@ -1 +1,262 @@ -a:4:{s:5:"query";s:61:"LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:61:"LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;";s:3:"len";i:61;s:4:"last";i:61;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CONCURRENT";s:5:"value";s:10:"CONCURRENT";s:7:"keyword";s:10:"CONCURRENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ABC";s:5:"value";s:3:"ABC";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'employee1.txt'";s:5:"value";s:13:"employee1.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:25;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:41;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:46;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"employee";s:5:"value";s:8:"employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:52;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:60;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";N;s:5:"table";N;s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";N;s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:10:"CONCURRENT";}}s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:37;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:51;i:2;i:0;}i:3;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:65;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCURRENT", + "value": "CONCURRENT", + "keyword": "CONCURRENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ABC", + "value": "ABC", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee1.txt'", + "value": "employee1.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": null, + "table": null, + "partition": null, + "charsetName": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": null, + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONCURRENT" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@11" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@14" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoadErr3.out b/tests/data/parser/parseLoadErr3.out index 97b5ed749..f6fb4762d 100644 --- a/tests/data/parser/parseLoadErr3.out +++ b/tests/data/parser/parseLoadErr3.out @@ -1,7 +1,352 @@ -a:4:{s:5:"query";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO TABLE test -DATA @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO TABLE test -DATA @a = 1;";s:3:"len";i:68;s:4:"last";i:68;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DATA";s:5:"value";s:4:"DATA";s:7:"keyword";s:4:"DATA";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:56;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:61;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:66;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:67;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:23;s:3:"idx";i:23;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATA", + "value": "DATA", + "keyword": "DATA", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": "IGNORE", + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@20" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoadErr4.out b/tests/data/parser/parseLoadErr4.out index 39d926295..edc0911ee 100644 --- a/tests/data/parser/parseLoadErr4.out +++ b/tests/data/parser/parseLoadErr4.out @@ -1,7 +1,335 @@ -a:4:{s:5:"query";s:62:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO test -DATA @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:62:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO test -DATA @a = 1;";s:3:"len";i:62;s:4:"last";i:62;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DATA";s:5:"value";s:4:"DATA";s:7:"keyword";s:4:"DATA";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:50;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:55;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:58;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:60;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:61;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";N;s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:3:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:79;i:2;i:0;}i:2;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:93;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO test\nDATA @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO test\nDATA @a = 1;", + "len": 62, + "last": 62, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATA", + "value": "DATA", + "keyword": "DATA", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "'/tmp/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "/tmp/test.txt" + }, + "table": null, + "partition": null, + "charsetName": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": "IGNORE", + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@18" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoadErr5.out b/tests/data/parser/parseLoadErr5.out index 178b38543..b49fcf801 100644 --- a/tests/data/parser/parseLoadErr5.out +++ b/tests/data/parser/parseLoadErr5.out @@ -1,7 +1,344 @@ -a:4:{s:5:"query";s:63:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO TABLE test -@a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:63:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO TABLE test -@a = 1;";s:3:"len";i:63;s:4:"last";i:63;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:56;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:59;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:61;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:62;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:3:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:107;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:107;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:135;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO TABLE test\n@a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO TABLE test\n@a = 1;", + "len": 63, + "last": 63, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": "IGNORE", + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@20" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@20" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@26" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLoadErr6.out b/tests/data/parser/parseLoadErr6.out index 97b5ed749..f6fb4762d 100644 --- a/tests/data/parser/parseLoadErr6.out +++ b/tests/data/parser/parseLoadErr6.out @@ -1,7 +1,352 @@ -a:4:{s:5:"query";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO TABLE test -DATA @a = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:68:"LOAD DATA INFILE '/tmp/test.txt' IGNORE -INTO TABLE test -DATA @a = 1;";s:3:"len";i:68;s:4:"last";i:68;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LOAD DATA";s:5:"value";s:9:"LOAD DATA";s:7:"keyword";s:9:"LOAD DATA";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INFILE";s:5:"value";s:6:"INFILE";s:7:"keyword";s:6:"INFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'/tmp/test.txt'";s:5:"value";s:13:"/tmp/test.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DATA";s:5:"value";s:4:"DATA";s:7:"keyword";s:4:"DATA";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:56;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:61;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:66;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:67;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:23;s:3:"idx";i:23;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LoadStatement":15:{s:9:"file_name";O:42:"PhpMyAdmin\SqlParser\Components\Expression":8:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"'/tmp/test.txt'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;s:4:"file";s:13:"/tmp/test.txt";}s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:9:"partition";N;s:12:"charset_name";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;s:20:"col_name_or_user_var";N;s:3:"set";N;s:13:"ignore_number";N;s:14:"replace_ignore";s:6:"IGNORE";s:10:"lines_rows";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOAD DATA INFILE '/tmp/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/test.txt'", + "value": "/tmp/test.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATA", + "value": "DATA", + "keyword": "DATA", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "fileName": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charsetName": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null, + "columnNamesOrUserVariables": null, + "set": null, + "ignoreNumber": null, + "replaceIgnore": "IGNORE", + "linesRows": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@20" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLock1.out b/tests/data/parser/parseLock1.out index 678bd43bb..f47140d02 100644 --- a/tests/data/parser/parseLock1.out +++ b/tests/data/parser/parseLock1.out @@ -1 +1,233 @@ -a:4:{s:5:"query";s:43:"LOCK TABLES table1 AS `t1` READ LOCAL;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:43:"LOCK TABLES table1 AS `t1` READ LOCAL;";s:3:"len";i:43;s:4:"last";i:43;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LOCAL";s:5:"value";s:5:"LOCAL";s:7:"keyword";s:5:"LOCAL";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:37;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:42;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":5:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:10:"READ LOCAL";}}s:6:"isLock";b:1;s:7:"options";N;s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS `t1` READ LOCAL;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS `t1` READ LOCAL;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "READ LOCAL" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLock2.out b/tests/data/parser/parseLock2.out index f0fbdd9de..241b76f30 100644 --- a/tests/data/parser/parseLock2.out +++ b/tests/data/parser/parseLock2.out @@ -1 +1,211 @@ -a:4:{s:5:"query";s:32:"LOCK TABLES table1 AS `t1` READ;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:32:"LOCK TABLES table1 AS `t1` READ;";s:3:"len";i:32;s:4:"last";i:32;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:13;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:4:"READ";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:11;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS `t1` READ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS `t1` READ;", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "READ" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLock3.out b/tests/data/parser/parseLock3.out index d49f6185b..c58f70759 100644 --- a/tests/data/parser/parseLock3.out +++ b/tests/data/parser/parseLock3.out @@ -1 +1,233 @@ -a:4:{s:5:"query";s:46:"LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:46:"LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE;";s:3:"len";i:46;s:4:"last";i:46;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WRITE";s:5:"value";s:5:"WRITE";s:7:"keyword";s:5:"WRITE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:40;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:18:"LOW_PRIORITY WRITE";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE;", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 15, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "LOW_PRIORITY WRITE" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLock4.out b/tests/data/parser/parseLock4.out index 1a8a7456a..da68df61c 100644 --- a/tests/data/parser/parseLock4.out +++ b/tests/data/parser/parseLock4.out @@ -1 +1,211 @@ -a:4:{s:5:"query";s:33:"LOCK TABLES table1 AS `t1` WRITE;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:33:"LOCK TABLES table1 AS `t1` WRITE;";s:3:"len";i:33;s:4:"last";i:33;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WRITE";s:5:"value";s:5:"WRITE";s:7:"keyword";s:5:"WRITE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:13;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:5:"WRITE";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:11;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS `t1` WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS `t1` WRITE;", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "WRITE" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLock5.out b/tests/data/parser/parseLock5.out index 861862f9d..0c7fb12cb 100644 --- a/tests/data/parser/parseLock5.out +++ b/tests/data/parser/parseLock5.out @@ -1 +1,348 @@ -a:4:{s:5:"query";s:60:"LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:60:"LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE;";s:3:"len";i:60;s:4:"last";i:60;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LOCAL";s:5:"value";s:5:"LOCAL";s:7:"keyword";s:5:"LOCAL";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:32;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t2`";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:49;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WRITE";s:5:"value";s:5:"WRITE";s:7:"keyword";s:5:"WRITE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:59;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:24;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:2:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:10:"READ LOCAL";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";s:2:"t2";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:5:"WRITE";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:22;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE;", + "len": 60, + "last": 60, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + }, + "type": "WRITE" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLock6.out b/tests/data/parser/parseLock6.out index 60c9ec294..5de30c781 100644 --- a/tests/data/parser/parseLock6.out +++ b/tests/data/parser/parseLock6.out @@ -1 +1,304 @@ -a:4:{s:5:"query";s:52:"LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:52:"LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE;";s:3:"len";i:52;s:4:"last";i:52;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:20:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LOCAL";s:5:"value";s:5:"LOCAL";s:7:"keyword";s:5:"LOCAL";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:29;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:38;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t2`";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:41;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WRITE";s:5:"value";s:5:"WRITE";s:7:"keyword";s:5:"WRITE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:51;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:20;s:3:"idx";i:20;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:2:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:10:"READ LOCAL";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";s:2:"t2";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:5:"WRITE";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:18;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE;", + "len": 52, + "last": 52, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + }, + "type": "WRITE" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr1.out b/tests/data/parser/parseLockErr1.out index 0ac8601b6..753a1779f 100644 --- a/tests/data/parser/parseLockErr1.out +++ b/tests/data/parser/parseLockErr1.out @@ -1 +1,140 @@ -a:4:{s:5:"query";s:18:"LOCK TABLES table1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:18:"LOCK TABLES table1";s:3:"len";i:18;s:4:"last";i:18;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:6:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:6;s:3:"idx";i:6;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";N;}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:5;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:34:"Unexpected end of LOCK expression.";i:1;r:37;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "type": null + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 5 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected end of LOCK expression.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr10.out b/tests/data/parser/parseLockErr10.out index 215a872ff..4462585eb 100644 --- a/tests/data/parser/parseLockErr10.out +++ b/tests/data/parser/parseLockErr10.out @@ -1 +1,250 @@ -a:4:{s:5:"query";s:51:"LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:51:"LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc";s:3:"len";i:51;s:4:"last";i:51;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:16:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WRITE";s:5:"value";s:5:"WRITE";s:7:"keyword";s:5:"WRITE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"abc";s:5:"value";s:3:"abc";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:48;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:16;s:3:"idx";i:16;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":5:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:6:"table1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:18:"LOW_PRIORITY WRITE";}}s:6:"isLock";b:1;s:7:"options";N;s:5:"first";i:0;s:4:"last";i:15;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "LOW_PRIORITY WRITE" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@19" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr2.out b/tests/data/parser/parseLockErr2.out index 7df1eae37..8421b4bc3 100644 --- a/tests/data/parser/parseLockErr2.out +++ b/tests/data/parser/parseLockErr2.out @@ -1 +1,220 @@ -a:4:{s:5:"query";s:32:"LOCK TABLES table1 AS `t1` LOCAL";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:32:"LOCK TABLES table1 AS `t1` LOCAL";s:3:"len";i:32;s:4:"last";i:32;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:12:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`t1`";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LOCAL";s:5:"value";s:5:"LOCAL";s:7:"keyword";s:5:"LOCAL";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:12;s:3:"idx";i:12;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:0:"";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:11;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected end of Lock expression.";i:1;N;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS `t1` LOCAL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS `t1` LOCAL", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@16" + }, + 0 + ], + [ + "Unexpected keyword.", + { + "@type": "@16" + }, + 0 + ], + [ + "Unexpected end of LOCK expression.", + null, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr3.out b/tests/data/parser/parseLockErr3.out index 46c59def1..e5419ed7e 100644 --- a/tests/data/parser/parseLockErr3.out +++ b/tests/data/parser/parseLockErr3.out @@ -1,4 +1,229 @@ -a:4:{s:5:"query";s:49:"-- TABLES misspelled -LOCK TABLE table1 AS t1 READ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:49:"-- TABLES misspelled -LOCK TABLE table1 AS t1 READ";s:3:"len";i:49;s:4:"last";i:49;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:14:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:20:"-- TABLES misspelled";s:5:"value";s:20:"-- TABLES misspelled";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:32;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:39;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:42;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:14;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:0:{}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:3:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:51;i:2;i:0;}i:2;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:65;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "-- TABLES misspelled\nLOCK TABLE table1 AS t1 READ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- TABLES misspelled\nLOCK TABLE table1 AS t1 READ", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 15, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- TABLES misspelled", + "value": "-- TABLES misspelled", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": true, + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@9" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@11" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@14" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr4.out b/tests/data/parser/parseLockErr4.out index 865c3092f..563bd9915 100644 --- a/tests/data/parser/parseLockErr4.out +++ b/tests/data/parser/parseLockErr4.out @@ -1,4 +1,178 @@ -a:4:{s:5:"query";s:48:"-- missing TABLES keyword -LOCK table1 READ LOCAL";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:48:"-- missing TABLES keyword -LOCK table1 READ LOCAL";s:3:"len";i:48;s:4:"last";i:48;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:25:"-- missing TABLES keyword";s:5:"value";s:25:"-- missing TABLES keyword";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:38;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LOCAL";s:5:"value";s:5:"LOCAL";s:7:"keyword";s:5:"LOCAL";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:43;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:0:{}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:28:"Unrecognized statement type.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "-- missing TABLES keyword\nLOCK table1 READ LOCAL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- missing TABLES keyword\nLOCK table1 READ LOCAL", + "len": 48, + "last": 48, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing TABLES keyword", + "value": "-- missing TABLES keyword", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": true, + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@9" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr5.out b/tests/data/parser/parseLockErr5.out index 7c35cadd0..2313592e7 100644 --- a/tests/data/parser/parseLockErr5.out +++ b/tests/data/parser/parseLockErr5.out @@ -1,4 +1,221 @@ -a:4:{s:5:"query";s:50:"-- extraneous comma -LOCK TABLES table1 READ LOCAL,";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:50:"-- extraneous comma -LOCK TABLES table1 READ LOCAL,";s:3:"len";i:50;s:4:"last";i:50;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:19:"-- extraneous comma";s:5:"value";s:19:"-- extraneous comma";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:25;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:32;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:39;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LOCAL";s:5:"value";s:5:"LOCAL";s:7:"keyword";s:5:"LOCAL";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:44;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:49;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:13;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:10:"READ LOCAL";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:12;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:33:"Unexpected end of LOCK statement.";i:1;r:86;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "-- extraneous comma\nLOCK TABLES table1 READ LOCAL,", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- extraneous comma\nLOCK TABLES table1 READ LOCAL,", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- extraneous comma", + "value": "-- extraneous comma", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "type": "READ LOCAL" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 12 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected end of LOCK statement.", + { + "@type": "@17" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr6.out b/tests/data/parser/parseLockErr6.out index bb8c1dfc6..bb965d089 100644 --- a/tests/data/parser/parseLockErr6.out +++ b/tests/data/parser/parseLockErr6.out @@ -1,4 +1,164 @@ -a:4:{s:5:"query";s:39:"-- missing lock type -LOCK TABLES table1";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:39:"-- missing lock type -LOCK TABLES table1";s:3:"len";i:39;s:4:"last";i:39;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:8:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:20:"-- missing lock type";s:5:"value";s:20:"-- missing lock type";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:26;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:33;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:8;s:3:"idx";i:8;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";N;}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:7;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:34:"Unexpected end of LOCK expression.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "-- missing lock type\nLOCK TABLES table1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "-- missing lock type\nLOCK TABLES table1", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing lock type", + "value": "-- missing lock type", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@7" + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "type": null + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected end of LOCK expression.", + { + "@type": "@11" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr7.out b/tests/data/parser/parseLockErr7.out index 61e4d99db..54c20b9d0 100644 --- a/tests/data/parser/parseLockErr7.out +++ b/tests/data/parser/parseLockErr7.out @@ -1 +1,218 @@ -a:4:{s:5:"query";s:40:"LOCK TABLES table1 AS table1 non_keyword";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:40:"LOCK TABLES table1 AS table1 non_keyword";s:3:"len";i:40;s:4:"last";i:40;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:12:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"non_keyword";s:5:"value";s:11:"non_keyword";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:12;s:3:"idx";i:12;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:6:"table1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:0:"";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:11;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:3:{i:0;a:3:{i:0;s:30:"An alias was previously found.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:79;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected end of Lock expression.";i:1;N;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS table1 non_keyword", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS table1 non_keyword", + "len": 40, + "last": 40, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "non_keyword", + "value": "non_keyword", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected end of LOCK expression.", + null, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr8.out b/tests/data/parser/parseLockErr8.out index e37ca06bc..53b6b10c6 100644 --- a/tests/data/parser/parseLockErr8.out +++ b/tests/data/parser/parseLockErr8.out @@ -1 +1,228 @@ -a:4:{s:5:"query";s:48:"LOCK TABLES table1 AS table1 READ AUTO_INCREMENT";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:48:"LOCK TABLES table1 AS table1 READ AUTO_INCREMENT";s:3:"len";i:48;s:4:"last";i:48;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:14:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"AUTO_INCREMENT";s:5:"value";s:14:"AUTO_INCREMENT";s:7:"keyword";s:14:"AUTO_INCREMENT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:14;s:3:"idx";i:14;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:6:"table1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:4:"READ";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:93;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS table1 READ AUTO_INCREMENT", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS table1 READ AUTO_INCREMENT", + "len": 48, + "last": 48, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "READ" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@17" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseLockErr9.out b/tests/data/parser/parseLockErr9.out index 0dcc606ac..d66100428 100644 --- a/tests/data/parser/parseLockErr9.out +++ b/tests/data/parser/parseLockErr9.out @@ -1 +1,235 @@ -a:4:{s:5:"query";s:46:"LOCK TABLES table1 AS table1 LOW_PRIORITY READ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:46:"LOCK TABLES table1 AS table1 LOW_PRIORITY READ";s:3:"len";i:46;s:4:"last";i:46;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:14:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOCK";s:5:"value";s:4:"LOCK";s:7:"keyword";s:4:"LOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:4;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:5;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"READ";s:5:"value";s:4:"READ";s:7:"keyword";s:4:"READ";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:14;s:3:"idx";i:14;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":4:{s:6:"locked";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\LockExpression":2:{s:5:"table";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";s:6:"table1";s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:12:"LOW_PRIORITY";}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:93;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected end of Lock expression.";i:1;r:79;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "LOCK TABLES table1 AS table1 LOW_PRIORITY READ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "LOCK TABLES table1 AS table1 LOW_PRIORITY READ", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "LOW_PRIORITY" + } + ], + "isLock": true, + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@17" + }, + 0 + ], + [ + "Unexpected end of LOCK expression.", + { + "@type": "@15" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsePurge.out b/tests/data/parser/parsePurge.out index b21609c93..be7cc1ca2 100644 --- a/tests/data/parser/parsePurge.out +++ b/tests/data/parser/parsePurge.out @@ -1 +1,182 @@ -a:4:{s:5:"query";s:37:"PURGE BINARY LOGS TO 'mysql-bin.010';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:37:"PURGE BINARY LOGS TO 'mysql-bin.010';";s:3:"len";i:37;s:4:"last";i:37;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"PURGE";s:5:"value";s:5:"PURGE";s:7:"keyword";s:5:"PURGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BINARY";s:5:"value";s:6:"BINARY";s:7:"keyword";s:6:"BINARY";s:4:"type";i:1;s:5:"flags";i:43;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOGS";s:5:"value";s:4:"LOGS";s:7:"keyword";s:4:"LOGS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'mysql-bin.010'";s:5:"value";s:13:"mysql-bin.010";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:36;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\PurgeStatement":6:{s:8:"log_type";s:6:"BINARY";s:10:"end_option";s:2:"TO";s:8:"end_expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:13:"mysql-bin.010";s:4:"expr";s:15:"'mysql-bin.010'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "PURGE BINARY LOGS TO 'mysql-bin.010';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "PURGE BINARY LOGS TO 'mysql-bin.010';", + "len": 37, + "last": 37, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql-bin.010'", + "value": "mysql-bin.010", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "logType": "BINARY", + "endOption": "TO", + "endExpr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "mysql-bin.010", + "expr": "'mysql-bin.010'", + "alias": null, + "function": null, + "subquery": null + }, + "options": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsePurge2.out b/tests/data/parser/parsePurge2.out index 7175a1ec1..3400ae3d6 100644 --- a/tests/data/parser/parsePurge2.out +++ b/tests/data/parser/parsePurge2.out @@ -1 +1,182 @@ -a:4:{s:5:"query";s:47:"PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:47:"PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';";s:3:"len";i:47;s:4:"last";i:47;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"PURGE";s:5:"value";s:5:"PURGE";s:7:"keyword";s:5:"PURGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BINARY";s:5:"value";s:6:"BINARY";s:7:"keyword";s:6:"BINARY";s:4:"type";i:1;s:5:"flags";i:43;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOGS";s:5:"value";s:4:"LOGS";s:7:"keyword";s:4:"LOGS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BEFORE";s:5:"value";s:6:"BEFORE";s:7:"keyword";s:6:"BEFORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:21:"'2008-04-02 22:46:26'";s:5:"value";s:19:"2008-04-02 22:46:26";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:46;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\PurgeStatement":6:{s:8:"log_type";s:6:"BINARY";s:10:"end_option";s:6:"BEFORE";s:8:"end_expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:19:"2008-04-02 22:46:26";s:4:"expr";s:21:"'2008-04-02 22:46:26'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';", + "len": 47, + "last": 47, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEFORE", + "value": "BEFORE", + "keyword": "BEFORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "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": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "logType": "BINARY", + "endOption": "BEFORE", + "endExpr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsePurge3.out b/tests/data/parser/parsePurge3.out index d3543e3a3..53ae9aa4a 100644 --- a/tests/data/parser/parsePurge3.out +++ b/tests/data/parser/parsePurge3.out @@ -1 +1,182 @@ -a:4:{s:5:"query";s:47:"PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:47:"PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26';";s:3:"len";i:47;s:4:"last";i:47;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"PURGE";s:5:"value";s:5:"PURGE";s:7:"keyword";s:5:"PURGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"MASTER";s:5:"value";s:6:"MASTER";s:7:"keyword";s:6:"MASTER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOGS";s:5:"value";s:4:"LOGS";s:7:"keyword";s:4:"LOGS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BEFORE";s:5:"value";s:6:"BEFORE";s:7:"keyword";s:6:"BEFORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:21:"'2008-04-02 22:46:26'";s:5:"value";s:19:"2008-04-02 22:46:26";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:46;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\PurgeStatement":6:{s:8:"log_type";s:6:"MASTER";s:10:"end_option";s:6:"BEFORE";s:8:"end_expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:19:"2008-04-02 22:46:26";s:4:"expr";s:21:"'2008-04-02 22:46:26'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26';", + "len": 47, + "last": 47, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MASTER", + "value": "MASTER", + "keyword": "MASTER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEFORE", + "value": "BEFORE", + "keyword": "BEFORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "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": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "logType": "MASTER", + "endOption": "BEFORE", + "endExpr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsePurge4.out b/tests/data/parser/parsePurge4.out index 857de005a..233d41a8d 100644 --- a/tests/data/parser/parsePurge4.out +++ b/tests/data/parser/parsePurge4.out @@ -1 +1,182 @@ -a:4:{s:5:"query";s:37:"PURGE MASTER LOGS TO 'mysql-bin.010';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:37:"PURGE MASTER LOGS TO 'mysql-bin.010';";s:3:"len";i:37;s:4:"last";i:37;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"PURGE";s:5:"value";s:5:"PURGE";s:7:"keyword";s:5:"PURGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"MASTER";s:5:"value";s:6:"MASTER";s:7:"keyword";s:6:"MASTER";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOGS";s:5:"value";s:4:"LOGS";s:7:"keyword";s:4:"LOGS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'mysql-bin.010'";s:5:"value";s:13:"mysql-bin.010";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:36;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\PurgeStatement":6:{s:8:"log_type";s:6:"MASTER";s:10:"end_option";s:2:"TO";s:8:"end_expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:13:"mysql-bin.010";s:4:"expr";s:15:"'mysql-bin.010'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "PURGE MASTER LOGS TO 'mysql-bin.010';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "PURGE MASTER LOGS TO 'mysql-bin.010';", + "len": 37, + "last": 37, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MASTER", + "value": "MASTER", + "keyword": "MASTER", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql-bin.010'", + "value": "mysql-bin.010", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "logType": "MASTER", + "endOption": "TO", + "endExpr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "mysql-bin.010", + "expr": "'mysql-bin.010'", + "alias": null, + "function": null, + "subquery": null + }, + "options": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsePurgeErr.out b/tests/data/parser/parsePurgeErr.out index 0175550f1..8b8118773 100644 --- a/tests/data/parser/parsePurgeErr.out +++ b/tests/data/parser/parsePurgeErr.out @@ -1 +1,180 @@ -a:4:{s:5:"query";s:30:"PURGE LOGS TO 'mysql-bin.010';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:30:"PURGE LOGS TO 'mysql-bin.010';";s:3:"len";i:30;s:4:"last";i:30;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"PURGE";s:5:"value";s:5:"PURGE";s:7:"keyword";s:5:"PURGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOGS";s:5:"value";s:4:"LOGS";s:7:"keyword";s:4:"LOGS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"'mysql-bin.010'";s:5:"value";s:13:"mysql-bin.010";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:29;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\PurgeStatement":6:{s:8:"log_type";N;s:10:"end_option";N;s:8:"end_expr";N;s:7:"options";N;s:5:"first";i:0;s:4:"last";i:7;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:18:"Unexpected keyword";i:1;r:23;i:2;i:0;}i:1;a:3:{i:0;s:18:"Unexpected keyword";i:1;r:37;i:2;i:0;}i:2;a:3:{i:0;s:17:"Unexpected token.";i:1;r:51;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "PURGE LOGS TO 'mysql-bin.010';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "PURGE LOGS TO 'mysql-bin.010';", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql-bin.010'", + "value": "mysql-bin.010", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "logType": null, + "endOption": null, + "endExpr": null, + "options": null, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword", + { + "@type": "@6" + }, + 0 + ], + [ + "Unexpected keyword", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@10" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsePurgeErr2.out b/tests/data/parser/parsePurgeErr2.out index 56fa5420d..664161bba 100644 --- a/tests/data/parser/parsePurgeErr2.out +++ b/tests/data/parser/parsePurgeErr2.out @@ -1 +1,164 @@ -a:4:{s:5:"query";s:23:"PURGE BINARY LOGS INTO;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:23:"PURGE BINARY LOGS INTO;";s:3:"len";i:23;s:4:"last";i:23;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"PURGE";s:5:"value";s:5:"PURGE";s:7:"keyword";s:5:"PURGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BINARY";s:5:"value";s:6:"BINARY";s:7:"keyword";s:6:"BINARY";s:4:"type";i:1;s:5:"flags";i:43;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOGS";s:5:"value";s:4:"LOGS";s:7:"keyword";s:4:"LOGS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\PurgeStatement":6:{s:8:"log_type";s:6:"BINARY";s:10:"end_option";N;s:8:"end_expr";N;s:7:"options";N;s:5:"first";i:0;s:4:"last";i:7;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:18:"Unexpected keyword";i:1;r:51;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "PURGE BINARY LOGS INTO;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "PURGE BINARY LOGS INTO;", + "len": 23, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "logType": "BINARY", + "endOption": null, + "endExpr": null, + "options": null, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword", + { + "@type": "@10" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsePurgeErr3.out b/tests/data/parser/parsePurgeErr3.out index 029890789..5563918d9 100644 --- a/tests/data/parser/parsePurgeErr3.out +++ b/tests/data/parser/parsePurgeErr3.out @@ -1 +1,219 @@ -a:4:{s:5:"query";s:38:"PURGE BINARY LOGS TO 'mysql.bin' INTO;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:38:"PURGE BINARY LOGS TO 'mysql.bin' INTO;";s:3:"len";i:38;s:4:"last";i:38;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"PURGE";s:5:"value";s:5:"PURGE";s:7:"keyword";s:5:"PURGE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BINARY";s:5:"value";s:6:"BINARY";s:7:"keyword";s:6:"BINARY";s:4:"type";i:1;s:5:"flags";i:43;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"LOGS";s:5:"value";s:4:"LOGS";s:7:"keyword";s:4:"LOGS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"'mysql.bin'";s:5:"value";s:9:"mysql.bin";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:37;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:13;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Statements\PurgeStatement":6:{s:8:"log_type";s:6:"BINARY";s:10:"end_option";s:2:"TO";s:8:"end_expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:9:"mysql.bin";s:4:"expr";s:11:"'mysql.bin'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:11;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:79;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "PURGE BINARY LOGS TO 'mysql.bin' INTO;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "PURGE BINARY LOGS TO 'mysql.bin' INTO;", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql.bin'", + "value": "mysql.bin", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "logType": "BINARY", + "endOption": "TO", + "endExpr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "mysql.bin", + "expr": "'mysql.bin'", + "alias": null, + "function": null, + "subquery": null + }, + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRename.out b/tests/data/parser/parseRename.out index 95cb72a6b..0ea7038ee 100644 --- a/tests/data/parser/parseRename.out +++ b/tests/data/parser/parseRename.out @@ -1 +1,184 @@ -a:4:{s:5:"query";s:23:"RENAME TABLE foo TO bar";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:23:"RENAME TABLE foo TO bar";s:3:"len";i:23;s:4:"last";i:23;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RENAME";s:5:"value";s:6:"RENAME";s:7:"keyword";s:6:"RENAME";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\RenameStatement":4:{s:7:"renames";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Components\RenameOperation":2:{s:3:"old";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:3:"new";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"bar";s:6:"column";N;s:4:"expr";s:3:"bar";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "RENAME TABLE foo TO bar", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RENAME TABLE foo TO bar", + "len": 23, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "options": null, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRename2.out b/tests/data/parser/parseRename2.out index 27aec11c1..d3b39b881 100644 --- a/tests/data/parser/parseRename2.out +++ b/tests/data/parser/parseRename2.out @@ -1 +1,297 @@ -a:4:{s:5:"query";s:36:"RENAME TABLE foo TO bar, baz TO qux;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:36:"RENAME TABLE foo TO bar, baz TO qux;";s:3:"len";i:36;s:4:"last";i:36;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RENAME";s:5:"value";s:6:"RENAME";s:7:"keyword";s:6:"RENAME";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"baz";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:29;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"qux";s:5:"value";s:3:"qux";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:32;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:35;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:18;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\RenameStatement":4:{s:7:"renames";a:2:{i:0;O:47:"PhpMyAdmin\SqlParser\Components\RenameOperation":2:{s:3:"old";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:3:"new";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"bar";s:6:"column";N;s:4:"expr";s:3:"bar";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}i:1;O:47:"PhpMyAdmin\SqlParser\Components\RenameOperation":2:{s:3:"old";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"baz";s:6:"column";N;s:4:"expr";s:3:"baz";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:3:"new";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"qux";s:6:"column";N;s:4:"expr";s:3:"qux";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:15;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "RENAME TABLE foo TO bar, baz TO qux;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RENAME TABLE foo TO bar, baz TO qux;", + "len": 36, + "last": 36, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qux", + "value": "qux", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "baz", + "column": null, + "expr": "baz", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "qux", + "column": null, + "expr": "qux", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "options": null, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRenameErr1.out b/tests/data/parser/parseRenameErr1.out index 484ce5ba9..1be57eaab 100644 --- a/tests/data/parser/parseRenameErr1.out +++ b/tests/data/parser/parseRenameErr1.out @@ -1 +1,183 @@ -a:4:{s:5:"query";s:20:"RENAME TABLE a TO TO";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:20:"RENAME TABLE a TO TO";s:3:"len";i:20;s:4:"last";i:20;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RENAME";s:5:"value";s:6:"RENAME";s:7:"keyword";s:6:"RENAME";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\RenameStatement":4:{s:7:"renames";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Components\RenameOperation":2:{s:3:"old";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:3:"new";N;}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:39:"The new name of the table was expected.";i:1;r:65;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "RENAME TABLE a TO TO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RENAME TABLE a TO TO", + "len": 20, + "last": 20, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + "new": null + } + ], + "options": null, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The new name of the table was expected.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRenameErr2.out b/tests/data/parser/parseRenameErr2.out index 872acb4bd..cbcbe0e39 100644 --- a/tests/data/parser/parseRenameErr2.out +++ b/tests/data/parser/parseRenameErr2.out @@ -1 +1,129 @@ -a:4:{s:5:"query";s:18:"RENAME TABLE TABLE";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:18:"RENAME TABLE TABLE";s:3:"len";i:18;s:4:"last";i:18;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:6:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RENAME";s:5:"value";s:6:"RENAME";s:7:"keyword";s:6:"RENAME";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:6;s:3:"idx";i:6;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\RenameStatement":4:{s:7:"renames";a:0:{}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:39:"The old name of the table was expected.";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:32:"A rename operation was expected.";i:1;r:37;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "RENAME TABLE TABLE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RENAME TABLE TABLE", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [], + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The old name of the table was expected.", + { + "@type": "@8" + }, + 0 + ], + [ + "A rename operation was expected.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRenameErr3.out b/tests/data/parser/parseRenameErr3.out index b17789672..d93db1cd9 100644 --- a/tests/data/parser/parseRenameErr3.out +++ b/tests/data/parser/parseRenameErr3.out @@ -1 +1,176 @@ -a:4:{s:5:"query";s:19:"RENAME TABLE a FROM";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:19:"RENAME TABLE a FROM";s:3:"len";i:19;s:4:"last";i:19;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:8:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RENAME";s:5:"value";s:6:"RENAME";s:7:"keyword";s:6:"RENAME";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:8;s:3:"idx";i:8;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\RenameStatement":5:{s:7:"renames";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Components\RenameOperation":2:{s:3:"old";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:3:"new";N;}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:6;s:4:"from";a:0:{}}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:3:{i:0;a:3:{i:0;s:26:"Keyword "TO" was expected.";i:1;r:51;i:2;i:0;}i:1;a:3:{i:0;s:32:"A rename operation was expected.";i:1;r:44;i:2;i:0;}i:2;a:3:{i:0;s:27:"An expression was expected.";i:1;r:58;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "RENAME TABLE a FROM", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RENAME TABLE a FROM", + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + "new": null + } + ], + "options": null, + "first": 0, + "last": 6, + "from": [] + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Keyword \"TO\" was expected.", + { + "@type": "@11" + }, + 0 + ], + [ + "A rename operation was expected.", + { + "@type": "@10" + }, + 0 + ], + [ + "An expression was expected.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRenameErr4.out b/tests/data/parser/parseRenameErr4.out index 6718a2fed..27eef2790 100644 --- a/tests/data/parser/parseRenameErr4.out +++ b/tests/data/parser/parseRenameErr4.out @@ -1 +1,214 @@ -a:4:{s:5:"query";s:26:"RENAME TABLE foo TO bar TO";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:26:"RENAME TABLE foo TO bar TO";s:3:"len";i:26;s:4:"last";i:26;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:12:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RENAME";s:5:"value";s:6:"RENAME";s:7:"keyword";s:6:"RENAME";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"TO";s:5:"value";s:2:"TO";s:7:"keyword";s:2:"TO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:24;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:12;s:3:"idx";i:12;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\RenameStatement":4:{s:7:"renames";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Components\RenameOperation":2:{s:3:"old";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:3:"new";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"bar";s:6:"column";N;s:4:"expr";s:3:"bar";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}s:7:"options";N;s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:79;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "RENAME TABLE foo TO bar TO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RENAME TABLE foo TO bar TO", + "len": 26, + "last": 26, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "options": null, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized keyword.", + { + "@type": "@15" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRenameErr5.out b/tests/data/parser/parseRenameErr5.out index 8bfca973e..7f0b8e429 100644 --- a/tests/data/parser/parseRenameErr5.out +++ b/tests/data/parser/parseRenameErr5.out @@ -1,4 +1,89 @@ -a:4:{s:5:"query";s:7:"RENAME -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:7:"RENAME -";s:3:"len";i:7;s:4:"last";i:7;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:3:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"RENAME";s:5:"value";s:6:"RENAME";s:7:"keyword";s:6:"RENAME";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:3;s:3:"idx";i:4;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\RenameStatement":4:{s:7:"renames";N;s:7:"options";N;s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:28:"Keyword at end of statement.";i:1;r:9;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "RENAME\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RENAME\n", + "len": 7, + "last": 7, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 3, + "idx": 4, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": null, + "options": null, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Keyword at end of statement.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplace.out b/tests/data/parser/parseReplace.out index 219b2dcc9..adcfece43 100644 --- a/tests/data/parser/parseReplace.out +++ b/tests/data/parser/parseReplace.out @@ -1,7 +1,449 @@ -a:4:{s:5:"query";s:75:"REPLACE LOW_PRIORITY -INTO users(id, username) -VALUES (1, 'Foo'), (2, 'Bar')";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:75:"REPLACE LOW_PRIORITY -INTO users(id, username) -VALUES (1, 'Foo'), (2, 'Bar')";s:3:"len";i:75;s:4:"last";i:75;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:31:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:31;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:32;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:46;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:53;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:54;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:55;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'Foo'";s:5:"value";s:3:"Foo";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:57;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:62;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:63;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:65;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:66;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:67;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'Bar'";s:5:"value";s:3:"Bar";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:69;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:74;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:31;s:3:"idx";i:31;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:2:{i:0;s:2:"id";i:1;s:8:"username";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";a:2:{i:0;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:1:"1";i:1;s:5:"'Foo'";}s:6:"values";a:2:{i:0;s:1:"1";i:1;s:3:"Foo";}}i:1;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:1:"2";i:1;s:5:"'Bar'";}s:6:"values";a:2:{i:0;s:1:"2";i:1;s:3:"Bar";}}}s:3:"set";N;s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:12:"LOW_PRIORITY";}}s:5:"first";i:0;s:4:"last";i:29;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "REPLACE LOW_PRIORITY\nINTO users(id, username)\nVALUES (1, 'Foo'), (2, 'Bar')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE LOW_PRIORITY\nINTO users(id, username)\nVALUES (1, 'Foo'), (2, 'Bar')", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 31, + "idx": 31, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Foo'", + "value": "Foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@24" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Bar'", + "value": "Bar", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "username" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": 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, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplace2.out b/tests/data/parser/parseReplace2.out index 46b5f7c94..b479a669b 100644 --- a/tests/data/parser/parseReplace2.out +++ b/tests/data/parser/parseReplace2.out @@ -1,10 +1,357 @@ -a:4:{s:5:"query";s:65:"REPLACE LOW_PRIORITY -INTO users -SET id = 1, - username = 'Bar';";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:65:"REPLACE LOW_PRIORITY -INTO users -SET id = 1, - username = 'Bar';";s:3:"len";i:65;s:4:"last";i:65;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:32;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:39;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:48;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:57;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'Bar'";s:5:"value";s:3:"Bar";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:59;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:64;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:24;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";N;s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"id";s:5:"value";s:1:"1";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:8:"username";s:5:"value";s:5:"'Bar'";}}s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:12:"LOW_PRIORITY";}}s:5:"first";i:0;s:4:"last";i:21;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "REPLACE LOW_PRIORITY\nINTO users\nSET id = 1,\n username = 'Bar';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE LOW_PRIORITY\nINTO users\nSET id = 1,\n username = 'Bar';", + "len": 65, + "last": 65, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 2, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Bar'", + "value": "Bar", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "id", + "value": "1" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "username", + "value": "'Bar'" + } + ], + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplaceErr.out b/tests/data/parser/parseReplaceErr.out index bd2f0913d..46b941187 100644 --- a/tests/data/parser/parseReplaceErr.out +++ b/tests/data/parser/parseReplaceErr.out @@ -1,7 +1,440 @@ -a:4:{s:5:"query";s:68:"REPLACE LOW_PRIORITY -INTO users(id, username) -(1, 'Foo'), (2, 'Bar')";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:68:"REPLACE LOW_PRIORITY -INTO users(id, username) -(1, 'Foo'), (2, 'Bar')";s:3:"len";i:68;s:4:"last";i:68;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:29:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"LOW_PRIORITY";s:5:"value";s:12:"LOW_PRIORITY";s:7:"keyword";s:12:"LOW_PRIORITY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:26;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:31;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:32;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:46;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:47;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:48;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'Foo'";s:5:"value";s:3:"Foo";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:50;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:55;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:56;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:58;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:59;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:60;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'Bar'";s:5:"value";s:3:"Bar";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:62;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:67;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:29;s:3:"idx";i:29;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:2:{i:0;s:2:"id";i:1;s:8:"username";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:12:"LOW_PRIORITY";}}s:5:"first";i:0;s:4:"last";i:13;}}s:8:"brackets";i:2;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:5:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:107;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:114;i:2;i:0;}i:2;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:135;i:2;i:0;}i:3;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:170;i:2;i:0;}i:4;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:191;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "REPLACE LOW_PRIORITY\nINTO users(id, username)\n(1, 'Foo'), (2, 'Bar')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE LOW_PRIORITY\nINTO users(id, username)\n(1, 'Foo'), (2, 'Bar')", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 29, + "idx": 29, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Foo'", + "value": "Foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Bar'", + "value": "Bar", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "username" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 2 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@20" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@21" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@25" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@31" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@34" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplaceErr2.out b/tests/data/parser/parseReplaceErr2.out index 936937044..413e9ebdd 100644 --- a/tests/data/parser/parseReplaceErr2.out +++ b/tests/data/parser/parseReplaceErr2.out @@ -1,4 +1,148 @@ -a:4:{s:5:"query";s:15:"REPLACE SELECT -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:15:"REPLACE SELECT -";s:3:"len";i:15;s:4:"last";i:15;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:2:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";N;s:6:"values";N;s:3:"set";N;s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:1;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:0:{}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:2;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:23;i:2;i:0;}i:1;a:3:{i:0;s:27:"An expression was expected.";i:1;r:37;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "REPLACE SELECT\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE SELECT\n", + "len": 15, + "last": 15, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": null, + "values": null, + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 2, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@6" + }, + 0 + ], + [ + "An expression was expected.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplaceErr3.out b/tests/data/parser/parseReplaceErr3.out index ffc9cf3ea..c60a9ab49 100644 --- a/tests/data/parser/parseReplaceErr3.out +++ b/tests/data/parser/parseReplaceErr3.out @@ -1,7 +1,188 @@ -a:4:{s:5:"query";s:25:"REPLACE INTO x "string" - -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:25:"REPLACE INTO x "string" - -";s:3:"len";i:25;s:4:"last";i:25;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"x";s:5:"value";s:1:"x";s:7:"keyword";s:1:"X";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:""string"";s:5:"value";s:6:"string";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:23;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"x";s:6:"column";N;s:4:"expr";s:1:"x";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";N;s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:5;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:51;i:2;i:0;}i:1;a:3:{i:0;s:34:"Unexpected beginning of statement.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "REPLACE INTO x \"string\"\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE INTO x \"string\"\n\n", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"string\"", + "value": "string", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@10" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplaceIntoErr.out b/tests/data/parser/parseReplaceIntoErr.out index ec26e16f8..b117996c3 100644 --- a/tests/data/parser/parseReplaceIntoErr.out +++ b/tests/data/parser/parseReplaceIntoErr.out @@ -1,7 +1,194 @@ -a:4:{s:5:"query";s:23:"REPLACE INTO x INSERT - -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:23:"REPLACE INTO x INSERT - -";s:3:"len";i:23;s:4:"last";i:23;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"x";s:5:"value";s:1:"x";s:7:"keyword";s:1:"X";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"INSERT";s:5:"value";s:6:"INSERT";s:7:"keyword";s:6:"INSERT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" - -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:2:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"x";s:6:"column";N;s:4:"expr";s:1:"x";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";N;s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:5;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\InsertStatement":8:{s:4:"into";N;s:6:"values";N;s:3:"set";N;s:6:"select";N;s:14:"onDuplicateSet";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:6;s:4:"last";i:7;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "REPLACE INTO x INSERT\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE INTO x INSERT\n\n", + "len": 23, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": null, + "values": null, + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 6, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplaceSelect.out b/tests/data/parser/parseReplaceSelect.out index a4c60dc70..d0d516dc7 100644 --- a/tests/data/parser/parseReplaceSelect.out +++ b/tests/data/parser/parseReplaceSelect.out @@ -1 +1,321 @@ -a:4:{s:5:"query";s:49:"REPLACE INTO `a` (`value`) SELECT value from `b`";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:49:"REPLACE INTO `a` (`value`) SELECT value from `b`";s:3:"len";i:49;s:4:"last";i:49;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"value";s:5:"value";s:5:"value";s:7:"keyword";s:5:"VALUE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"from";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`b`";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:46;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:18;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:3:"`a`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:5:"value";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";N;s:6:"select";O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"value";s:4:"expr";s:5:"value";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"b";s:6:"column";N;s:4:"expr";s:3:"`b`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:10;s:4:"last";i:16;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "REPLACE INTO `a` (`value`) SELECT value from `b`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE INTO `a` (`value`) SELECT value from `b`", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value", + "value": "value", + "keyword": "VALUE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "value", + "expr": "value", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "b", + "column": null, + "expr": "`b`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 10, + "last": 16 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplaceSet.out b/tests/data/parser/parseReplaceSet.out index e4b3c6956..e52e7654e 100644 --- a/tests/data/parser/parseReplaceSet.out +++ b/tests/data/parser/parseReplaceSet.out @@ -1 +1,284 @@ -a:4:{s:5:"query";s:44:"REPLACE INTO `a` (`value`) SET value = '123'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:44:"REPLACE INTO `a` (`value`) SET value = '123'";s:3:"len";i:44;s:4:"last";i:44;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"value";s:5:"value";s:5:"value";s:7:"keyword";s:5:"VALUE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:37;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'123'";s:5:"value";s:3:"123";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:39;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:18;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:3:"`a`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:5:"value";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";N;s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:5:"value";s:5:"value";s:5:"'123'";}}s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:16;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "REPLACE INTO `a` (`value`) SET value = '123'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE INTO `a` (`value`) SET value = '123'", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value", + "value": "value", + "keyword": "VALUE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 2, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "value", + "value": "'123'" + } + ], + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseReplaceValues.out b/tests/data/parser/parseReplaceValues.out index 60cf3962d..39eea591e 100644 --- a/tests/data/parser/parseReplaceValues.out +++ b/tests/data/parser/parseReplaceValues.out @@ -1 +1,330 @@ -a:4:{s:5:"query";s:50:"REPLACE INTO `a` (`value`) VALUES ('123'), ('123')";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:50:"REPLACE INTO `a` (`value`) VALUES ('123'), ('123')";s:3:"len";i:50;s:4:"last";i:50;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"REPLACE";s:5:"value";s:7:"REPLACE";s:7:"keyword";s:7:"REPLACE";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"`a`";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`value`";s:5:"value";s:5:"value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"VALUES";s:5:"value";s:6:"VALUES";s:7:"keyword";s:6:"VALUES";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'123'";s:5:"value";s:3:"123";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:43;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'123'";s:5:"value";s:3:"123";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:44;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:49;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\ReplaceStatement":7:{s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";N;s:4:"dest";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:3:"`a`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:7:"columns";a:1:{i:0;s:5:"value";}s:6:"values";N;s:14:"fields_options";N;s:14:"fields_keyword";N;s:13:"lines_options";N;}s:6:"values";a:2:{i:0;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:1:{i:0;s:5:"'123'";}s:6:"values";a:1:{i:0;s:3:"123";}}i:1;O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:1:{i:0;s:5:"'123'";}s:6:"values";a:1:{i:0;s:3:"123";}}}s:3:"set";N;s:6:"select";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:19;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "REPLACE INTO `a` (`value`) VALUES ('123'), ('123')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "REPLACE INTO `a` (`value`) VALUES ('123'), ('123')", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "'123'" + ], + "values": [ + "123" + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "'123'" + ], + "values": [ + "123" + ] + } + ], + "set": null, + "select": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseRestore.out b/tests/data/parser/parseRestore.out index fd93de822..8d8492811 100644 --- a/tests/data/parser/parseRestore.out +++ b/tests/data/parser/parseRestore.out @@ -1 +1,184 @@ -a:4:{s:5:"query";s:55:"RESTORE TABLE my_table FROM "/path/to/backup/directory"";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:55:"RESTORE TABLE my_table FROM "/path/to/backup/directory"";s:3:"len";i:55;s:4:"last";i:55;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"RESTORE";s:5:"value";s:7:"RESTORE";s:7:"keyword";s:7:"RESTORE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"TABLE";s:5:"value";s:5:"TABLE";s:7:"keyword";s:5:"TABLE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"my_table";s:5:"value";s:8:"my_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:27:""/path/to/backup/directory"";s:5:"value";s:25:"/path/to/backup/directory";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:28;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:48:"PhpMyAdmin\SqlParser\Statements\RestoreStatement":4:{s:6:"tables";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"my_table";s:6:"column";N;s:4:"expr";s:8:"my_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:0;s:5:"TABLE";i:1;a:4:{s:4:"name";s:4:"FROM";s:6:"equals";b:0;s:4:"expr";s:27:""/path/to/backup/directory"";s:5:"value";s:25:"/path/to/backup/directory";}}}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "RESTORE TABLE my_table FROM \"/path/to/backup/directory\"", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "RESTORE TABLE my_table FROM \"/path/to/backup/directory\"", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTORE", + "value": "RESTORE", + "keyword": "RESTORE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"/path/to/backup/directory\"", + "value": "/path/to/backup/directory", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_table", + "column": null, + "expr": "my_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "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 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect.out b/tests/data/parser/parseSelect.out index 3ce9d61a9..9e5e14b05 100644 --- a/tests/data/parser/parseSelect.out +++ b/tests/data/parser/parseSelect.out @@ -1,40 +1,1097 @@ -a:4:{s:5:"query";s:231:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:231:"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;";s:3:"len";i:231;s:4:"last";i:231;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:81:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ALL";s:5:"value";s:3:"ALL";s:7:"keyword";s:3:"ALL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"MAX_STATEMENT_TIME";s:5:"value";s:18:"MAX_STATEMENT_TIME";s:7:"keyword";s:18:"MAX_STATEMENT_TIME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:30;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:32;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:39;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:41;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:43;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"result";s:5:"value";s:6:"result";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:48;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:54;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:60;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:64;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:70;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:72;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:73;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:78;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:82;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`users`";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:83;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:90;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:91;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:100;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`name`";s:5:"value";s:4:"name";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:103;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:109;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:110;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:114;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`test`";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:119;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:125;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:126;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:131;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:132;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"posts";s:5:"value";s:5:"posts";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:133;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:138;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:143;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:152;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:153;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:154;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:156;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:157;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p2";s:5:"value";s:2:"p2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:158;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:160;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:161;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:162;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:167;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:172;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:174;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:">";s:5:"value";s:1:">";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:175;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:176;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:177;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:178;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:179;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:187;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:192;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:200;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DESC";s:5:"value";s:4:"DESC";s:7:"keyword";s:4:"DESC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:201;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:205;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:206;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:211;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:213;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:214;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:219;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"3";s:5:"value";i:3;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:220;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:221;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"OFFSET";s:5:"value";s:6:"OFFSET";s:7:"keyword";s:6:"OFFSET";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:222;}i:77;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:228;}i:78;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:229;}i:79;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:230;}i:80;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:81;s:3:"idx";i:81;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:4:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:5:"1 + 2";s:5:"alias";s:6:"result";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:4:"@idx";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:3;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:4:"test";s:5:"table";s:5:"users";s:6:"column";s:8:"username";s:4:"expr";s:21:"test.`users`.username";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:4:"test";s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:12:"`test`.users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"posts";s:6:"column";N;s:4:"expr";s:5:"posts";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:2:"p1";i:1;s:2:"p2";}s:6:"values";a:2:{i:0;s:2:"p1";i:1;s:2:"p2";}}s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:2:"id";}s:10:"isOperator";b:0;s:4:"expr";s:6:"id > 0";}}s:5:"group";N;s:6:"having";N;s:5:"order";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:8:"username";s:4:"expr";s:8:"username";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:4:"DESC";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:2;s:8:"rowCount";i:3;}s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:3:"ALL";i:3;a:4:{s:4:"name";s:18:"MAX_STATEMENT_TIME";s:6:"equals";b:1;s:4:"expr";s:2:"10";s:5:"value";s:2:"10";}}}s:5:"first";i:0;s:4:"last";i:78;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 81, + "idx": 81, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALL", + "value": "ALL", + "keyword": "ALL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_STATEMENT_TIME", + "value": "MAX_STATEMENT_TIME", + "keyword": "MAX_STATEMENT_TIME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`users`", + "value": "users", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 2, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 2, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test`", + "value": "test", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "posts", + "value": "posts", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@88" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1 + 2", + "alias": "result", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "@idx", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "test", + "table": "users", + "column": "username", + "expr": "test.`users`.username", + "alias": "name", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "test", + "table": "users", + "column": null, + "expr": "`test`.users", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "posts", + "column": null, + "expr": "posts", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "p1", + "p2" + ], + "values": [ + "p1", + "p2" + ] + }, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "id" + ], + "isOperator": false, + "expr": "id > 0", + "leftOperand": "id", + "operator": ">", + "rightOperand": "0" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "username", + "expr": "username", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Desc", + "value": "DESC" + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 3 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect10.out b/tests/data/parser/parseSelect10.out index f69e592ad..e8849ac86 100644 --- a/tests/data/parser/parseSelect10.out +++ b/tests/data/parser/parseSelect10.out @@ -1,4 +1,390 @@ -a:4:{s:5:"query";s:83:"SELECT my_column FROM my_table WHERE BINARY(my_column) != BINARY(UPPER(my_column)) -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:83:"SELECT my_column FROM my_table WHERE BINARY(my_column) != BINARY(UPPER(my_column)) -";s:3:"len";i:83;s:4:"last";i:83;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:26:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"my_column";s:5:"value";s:9:"my_column";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"my_table";s:5:"value";s:8:"my_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:31;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BINARY";s:5:"value";s:6:"BINARY";s:7:"keyword";s:6:"BINARY";s:4:"type";i:1;s:5:"flags";i:43;s:8:"position";i:37;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:43;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"my_column";s:5:"value";s:9:"my_column";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:53;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"!=";s:5:"value";s:2:"!=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:55;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"BINARY";s:5:"value";s:6:"BINARY";s:7:"keyword";s:6:"BINARY";s:4:"type";i:1;s:5:"flags";i:43;s:8:"position";i:58;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:64;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"UPPER";s:5:"value";s:5:"UPPER";s:7:"keyword";s:5:"UPPER";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:65;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:70;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"my_column";s:5:"value";s:9:"my_column";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:71;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:81;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:26;s:3:"idx";i:26;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:9:"my_column";s:4:"expr";s:9:"my_column";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"my_table";s:6:"column";N;s:4:"expr";s:8:"my_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:9:"my_column";i:1;s:5:"UPPER";}s:10:"isOperator";b:0;s:4:"expr";s:45:"BINARY(my_column) != BINARY(UPPER(my_column))";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:24;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT my_column FROM my_table WHERE BINARY(my_column) != BINARY(UPPER(my_column))\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 26, + "idx": 26, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_column", + "value": "my_column", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_column", + "value": "my_column", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "!=", + "value": "!=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": { + "@type": "@3" + }, + "flags": 43, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPPER", + "value": "UPPER", + "keyword": "UPPER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_column", + "value": "my_column", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "my_column", + "expr": "my_column", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_table", + "column": null, + "expr": "my_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "my_column", + "UPPER" + ], + "isOperator": false, + "expr": "BINARY(my_column) != BINARY(UPPER(my_column))", + "leftOperand": "BINARY(my_column)", + "operator": "!=", + "rightOperand": "BINARY(UPPER(my_column))" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect11.out b/tests/data/parser/parseSelect11.out index 2eec09ad6..14b5e630d 100644 --- a/tests/data/parser/parseSelect11.out +++ b/tests/data/parser/parseSelect11.out @@ -1,4 +1,199 @@ -a:4:{s:5:"query";s:19:"SELECT 1 AND NOT 1 -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:19:"SELECT 1 AND NOT 1 -";s:3:"len";i:19;s:4:"last";i:19;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:11:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:12;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"NOT";s:5:"value";s:3:"NOT";s:7:"keyword";s:3:"NOT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:13;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:17;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:11;s:3:"idx";i:11;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:11:"1 AND NOT 1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:9;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT 1 AND NOT 1\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 1 AND NOT 1\n", + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1 AND NOT 1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect12.in b/tests/data/parser/parseSelect12.in new file mode 100644 index 000000000..3a71172e2 --- /dev/null +++ b/tests/data/parser/parseSelect12.in @@ -0,0 +1 @@ +SELECT NOT 1 AS test \ No newline at end of file diff --git a/tests/data/parser/parseSelect12.out b/tests/data/parser/parseSelect12.out new file mode 100644 index 000000000..4b77610fb --- /dev/null +++ b/tests/data/parser/parseSelect12.out @@ -0,0 +1,190 @@ +{ + "query": "SELECT NOT 1 AS test", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT NOT 1 AS test", + "len": 20, + "last": 20, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NOT 1", + "alias": "test", + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect13.in b/tests/data/parser/parseSelect13.in new file mode 100644 index 000000000..e6f994c98 --- /dev/null +++ b/tests/data/parser/parseSelect13.in @@ -0,0 +1 @@ +SELECT post.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted, user.*, userfield.*, usertextfield.*, icon.title as icontitle, icon.iconpath, avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight, spamlog.postid AS spamlog_postid, deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason, editlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline, editlog.reason AS edit_reason, editlog.hashistory, postparsed.pagetext_html, postparsed.hasimages, sigparsed.signatureparsed, sigparsed.hasimages AS sighasimages, sigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid , post_icon_list.icon_id_list, post_icon_list.is_auto AS icon_is_auto, approvedlog.modid AS approvedmodid, approvedlog.dateline AS approveddateline, approvedlog.status AS approvedstatus, approvedlog.info AS approvedinfo, movedlog.modid AS movedmodid, movedlog.dateline AS moveddateline, movedlog.status AS movedstatus, movedlog.info AS movedinfo, ( SELECT useragent FROM session WHERE userid=post.userid AND lastactivity > 1644859580 ORDER BY lastactivity DESC LIMIT 1 ) AS useragent, IF ( user.userid IS NOT NULL, (SELECT COUNT(usernoteid) FROM usernote AS usernote WHERE usernote.userid=user.userid AND usernote.priority>=0), 0 ) AS usernotecount , deletionlog.dateline AS del_dateline, scheduled_approval.defer_time AS vbpmal_approval_defer_time, additional_user_data.last_year_message_count, additional_user_data.last_year_reputation, additional_user_data.last_year_groan_count, paid_post_activation.activation_id AS paid_post_activation_id, alm_Model_UserData.credits FROM post AS post LEFT JOIN user AS user ON(user.userid = post.userid) LEFT JOIN userfield AS userfield ON(userfield.userid = user.userid) LEFT JOIN usertextfield AS usertextfield ON(usertextfield.userid = user.userid) LEFT JOIN icon AS icon ON(icon.iconid = post.iconid) LEFT JOIN avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN customavatar AS customavatar ON(customavatar.userid = user.userid) LEFT JOIN spamlog AS spamlog ON(spamlog.postid = post.postid) LEFT JOIN deletionlog AS deletionlog ON(post.postid = deletionlog.primaryid AND deletionlog.type = 'post') LEFT JOIN editlog AS editlog ON(editlog.postid = post.postid) LEFT JOIN postparsed AS postparsed ON(postparsed.postid = post.postid AND postparsed.styleid = 23 AND postparsed.languageid = 5) LEFT JOIN sigparsed AS sigparsed ON(sigparsed.userid = user.userid AND sigparsed.styleid = 23 AND sigparsed.languageid = 5) LEFT JOIN sigpic AS sigpic ON(sigpic.userid = post.userid) LEFT JOIN vbppim_post_icon_list AS post_icon_list ON post_icon_list.post_id=post.postid LEFT JOIN vbpmal_log AS approvedlog ON (approvedlog.itemid=post.postid AND approvedlog.action='postapprove') LEFT JOIN vbpmal_log AS movedlog ON (movedlog.itemid=post.postid AND movedlog.action='postmove') LEFT JOIN vbpmal_scheduled_post_approval AS scheduled_approval ON scheduled_approval.post_id = post.postid LEFT JOIN vbpsmt_additional_user_data AS additional_user_data ON additional_user_data.userid=post.userid LEFT JOIN market_pp_post_activation_mapping AS paid_post_activation ON paid_post_activation.post_id = post.postid LEFT JOIN alm_Model_UserData AS alm_Model_UserData ON alm_Model_UserData.user_id=user.userid WHERE post.postid IN (0,3254399,3254508,3254743,3254817,3254969,3255328,3255582,3257603,3257873,3258126,3258150,3258254,3258272,3258311,3260767,3260770,3260776,3261180,3261263,3261317,3261318) ORDER BY post.dateline \ No newline at end of file diff --git a/tests/data/parser/parseSelect13.out b/tests/data/parser/parseSelect13.out new file mode 100644 index 000000000..2699726bf --- /dev/null +++ b/tests/data/parser/parseSelect13.out @@ -0,0 +1,12769 @@ +{ + "query": "SELECT post.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted, user.*, userfield.*, usertextfield.*, icon.title as icontitle, icon.iconpath, avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight, spamlog.postid AS spamlog_postid, deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason, editlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline, editlog.reason AS edit_reason, editlog.hashistory, postparsed.pagetext_html, postparsed.hasimages, sigparsed.signatureparsed, sigparsed.hasimages AS sighasimages, sigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid , post_icon_list.icon_id_list, post_icon_list.is_auto AS icon_is_auto, approvedlog.modid AS approvedmodid, approvedlog.dateline AS approveddateline, approvedlog.status AS approvedstatus, approvedlog.info AS approvedinfo, movedlog.modid AS movedmodid, movedlog.dateline AS moveddateline, movedlog.status AS movedstatus, movedlog.info AS movedinfo, ( SELECT useragent FROM session WHERE userid=post.userid AND lastactivity > 1644859580 ORDER BY lastactivity DESC LIMIT 1 ) AS useragent, IF ( user.userid IS NOT NULL, (SELECT COUNT(usernoteid) FROM usernote AS usernote WHERE usernote.userid=user.userid AND usernote.priority>=0), 0 ) AS usernotecount , deletionlog.dateline AS del_dateline, scheduled_approval.defer_time AS vbpmal_approval_defer_time, additional_user_data.last_year_message_count, additional_user_data.last_year_reputation, additional_user_data.last_year_groan_count, paid_post_activation.activation_id AS paid_post_activation_id, alm_Model_UserData.credits FROM post AS post LEFT JOIN user AS user ON(user.userid = post.userid) LEFT JOIN userfield AS userfield ON(userfield.userid = user.userid) LEFT JOIN usertextfield AS usertextfield ON(usertextfield.userid = user.userid) LEFT JOIN icon AS icon ON(icon.iconid = post.iconid) LEFT JOIN avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN customavatar AS customavatar ON(customavatar.userid = user.userid) LEFT JOIN spamlog AS spamlog ON(spamlog.postid = post.postid) LEFT JOIN deletionlog AS deletionlog ON(post.postid = deletionlog.primaryid AND deletionlog.type = 'post') LEFT JOIN editlog AS editlog ON(editlog.postid = post.postid) LEFT JOIN postparsed AS postparsed ON(postparsed.postid = post.postid AND postparsed.styleid = 23 AND postparsed.languageid = 5) LEFT JOIN sigparsed AS sigparsed ON(sigparsed.userid = user.userid AND sigparsed.styleid = 23 AND sigparsed.languageid = 5) LEFT JOIN sigpic AS sigpic ON(sigpic.userid = post.userid) LEFT JOIN vbppim_post_icon_list AS post_icon_list ON post_icon_list.post_id=post.postid LEFT JOIN vbpmal_log AS approvedlog ON (approvedlog.itemid=post.postid AND approvedlog.action='postapprove') LEFT JOIN vbpmal_log AS movedlog ON (movedlog.itemid=post.postid AND movedlog.action='postmove') LEFT JOIN vbpmal_scheduled_post_approval AS scheduled_approval ON scheduled_approval.post_id = post.postid LEFT JOIN vbpsmt_additional_user_data AS additional_user_data ON additional_user_data.userid=post.userid LEFT JOIN market_pp_post_activation_mapping AS paid_post_activation ON paid_post_activation.post_id = post.postid LEFT JOIN alm_Model_UserData AS alm_Model_UserData ON alm_Model_UserData.user_id=user.userid WHERE post.postid IN (0,3254399,3254508,3254743,3254817,3254969,3255328,3255582,3257603,3257873,3258126,3258150,3258254,3258272,3258311,3260767,3260770,3260776,3261180,3261263,3261317,3261318) ORDER BY post.dateline", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT post.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted, user.*, userfield.*, usertextfield.*, icon.title as icontitle, icon.iconpath, avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight, spamlog.postid AS spamlog_postid, deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason, editlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline, editlog.reason AS edit_reason, editlog.hashistory, postparsed.pagetext_html, postparsed.hasimages, sigparsed.signatureparsed, sigparsed.hasimages AS sighasimages, sigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid , post_icon_list.icon_id_list, post_icon_list.is_auto AS icon_is_auto, approvedlog.modid AS approvedmodid, approvedlog.dateline AS approveddateline, approvedlog.status AS approvedstatus, approvedlog.info AS approvedinfo, movedlog.modid AS movedmodid, movedlog.dateline AS moveddateline, movedlog.status AS movedstatus, movedlog.info AS movedinfo, ( SELECT useragent FROM session WHERE userid=post.userid AND lastactivity > 1644859580 ORDER BY lastactivity DESC LIMIT 1 ) AS useragent, IF ( user.userid IS NOT NULL, (SELECT COUNT(usernoteid) FROM usernote AS usernote WHERE usernote.userid=user.userid AND usernote.priority>=0), 0 ) AS usernotecount , deletionlog.dateline AS del_dateline, scheduled_approval.defer_time AS vbpmal_approval_defer_time, additional_user_data.last_year_message_count, additional_user_data.last_year_reputation, additional_user_data.last_year_groan_count, paid_post_activation.activation_id AS paid_post_activation_id, alm_Model_UserData.credits FROM post AS post LEFT JOIN user AS user ON(user.userid = post.userid) LEFT JOIN userfield AS userfield ON(userfield.userid = user.userid) LEFT JOIN usertextfield AS usertextfield ON(usertextfield.userid = user.userid) LEFT JOIN icon AS icon ON(icon.iconid = post.iconid) LEFT JOIN avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN customavatar AS customavatar ON(customavatar.userid = user.userid) LEFT JOIN spamlog AS spamlog ON(spamlog.postid = post.postid) LEFT JOIN deletionlog AS deletionlog ON(post.postid = deletionlog.primaryid AND deletionlog.type = 'post') LEFT JOIN editlog AS editlog ON(editlog.postid = post.postid) LEFT JOIN postparsed AS postparsed ON(postparsed.postid = post.postid AND postparsed.styleid = 23 AND postparsed.languageid = 5) LEFT JOIN sigparsed AS sigparsed ON(sigparsed.userid = user.userid AND sigparsed.styleid = 23 AND sigparsed.languageid = 5) LEFT JOIN sigpic AS sigpic ON(sigpic.userid = post.userid) LEFT JOIN vbppim_post_icon_list AS post_icon_list ON post_icon_list.post_id=post.postid LEFT JOIN vbpmal_log AS approvedlog ON (approvedlog.itemid=post.postid AND approvedlog.action='postapprove') LEFT JOIN vbpmal_log AS movedlog ON (movedlog.itemid=post.postid AND movedlog.action='postmove') LEFT JOIN vbpmal_scheduled_post_approval AS scheduled_approval ON scheduled_approval.post_id = post.postid LEFT JOIN vbpsmt_additional_user_data AS additional_user_data ON additional_user_data.userid=post.userid LEFT JOIN market_pp_post_activation_mapping AS paid_post_activation ON paid_post_activation.post_id = post.postid LEFT JOIN alm_Model_UserData AS alm_Model_UserData ON alm_Model_UserData.user_id=user.userid WHERE post.postid IN (0,3254399,3254508,3254743,3254817,3254969,3255328,3255582,3257603,3257873,3258126,3258150,3258254,3258272,3258311,3260767,3260770,3260776,3261180,3261263,3261317,3261318) ORDER BY post.dateline", + "len": 3834, + "last": 3834, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 1035, + "idx": 1035, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postusername", + "value": "postusername", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ipaddress", + "value": "ipaddress", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ip", + "value": "ip", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "visible", + "value": "visible", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "isdeleted", + "value": "isdeleted", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userfield", + "value": "userfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usertextfield", + "value": "usertextfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icon", + "value": "icon", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icontitle", + "value": "icontitle", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icon", + "value": "icon", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "iconpath", + "value": "iconpath", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatar", + "value": "avatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatarpath", + "value": "avatarpath", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ISNULL", + "value": "ISNULL", + "keyword": "ISNULL", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customavatar", + "value": "customavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hascustomavatar", + "value": "hascustomavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customavatar", + "value": "customavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dateline", + "value": "dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatardateline", + "value": "avatardateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customavatar", + "value": "customavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "width", + "value": "width", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avwidth", + "value": "avwidth", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customavatar", + "value": "customavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "height", + "value": "height", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avheight", + "value": "avheight", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "spamlog", + "value": "spamlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "spamlog_postid", + "value": "spamlog_postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "del_userid", + "value": "del_userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "del_username", + "value": "del_username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 478 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "reason", + "value": "reason", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 485 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "del_reason", + "value": "del_reason", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 489 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "edit_userid", + "value": "edit_userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "edit_username", + "value": "edit_username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 574 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dateline", + "value": "dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 575 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 586 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "edit_dateline", + "value": "edit_dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 587 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 601 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "reason", + "value": "reason", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 616 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "edit_reason", + "value": "edit_reason", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 620 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 631 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 632 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hashistory", + "value": "hashistory", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 652 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postparsed", + "value": "postparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 653 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pagetext_html", + "value": "pagetext_html", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 677 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postparsed", + "value": "postparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hasimages", + "value": "hasimages", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 690 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 700 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigparsed", + "value": "sigparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 701 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "signatureparsed", + "value": "signatureparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 727 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigparsed", + "value": "sigparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 728 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hasimages", + "value": "hasimages", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 750 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sighasimages", + "value": "sighasimages", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 796 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dateline", + "value": "dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpicdateline", + "value": "sigpicdateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 809 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 824 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 825 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "width", + "value": "width", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 837 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 838 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 840 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpicwidth", + "value": "sigpicwidth", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 841 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 854 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "height", + "value": "height", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 868 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 870 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpicheight", + "value": "sigpicheight", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 871 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "displaygroupid", + "value": "displaygroupid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 888 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 905 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 906 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 910 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usergroupid", + "value": "usergroupid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 911 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "displaygroupid", + "value": "displaygroupid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 939 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 942 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "displaygroupid", + "value": "displaygroupid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 943 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 957 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 958 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "infractiongroupid", + "value": "infractiongroupid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 959 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 976 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 977 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 978 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post_icon_list", + "value": "post_icon_list", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 979 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icon_id_list", + "value": "icon_id_list", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post_icon_list", + "value": "post_icon_list", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1008 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "is_auto", + "value": "is_auto", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1030 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1031 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icon_is_auto", + "value": "icon_is_auto", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedlog", + "value": "approvedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1048 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1059 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "modid", + "value": "modid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1060 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1065 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedmodid", + "value": "approvedmodid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1082 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1083 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedlog", + "value": "approvedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1084 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dateline", + "value": "dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approveddateline", + "value": "approveddateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedlog", + "value": "approvedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "status", + "value": "status", + "keyword": "STATUS", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedstatus", + "value": "approvedstatus", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedlog", + "value": "approvedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "info", + "value": "info", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedinfo", + "value": "approvedinfo", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedlog", + "value": "movedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "modid", + "value": "modid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedmodid", + "value": "movedmodid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedlog", + "value": "movedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dateline", + "value": "dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1246 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "moveddateline", + "value": "moveddateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedlog", + "value": "movedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "status", + "value": "status", + "keyword": "STATUS", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedstatus", + "value": "movedstatus", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedlog", + "value": "movedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "info", + "value": "info", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedinfo", + "value": "movedinfo", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "useragent", + "value": "useragent", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "session", + "value": "session", + "keyword": "SESSION", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 1348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 1368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "lastactivity", + "value": "lastactivity", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 1398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1644859580", + "value": 1644859580, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 1400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 1411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "lastactivity", + "value": "lastactivity", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1432 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 1444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "useragent", + "value": "useragent", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 1462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1471 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1478 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 1482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 1500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usernoteid", + "value": "usernoteid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usernote", + "value": "usernote", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usernote", + "value": "usernote", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1535 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1543 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1544 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usernote", + "value": "usernote", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1550 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 1565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usernote", + "value": "usernote", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1590 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "priority", + "value": "priority", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">=", + "value": ">=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 1599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 1601 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 1605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usernotecount", + "value": "usernotecount", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dateline", + "value": "dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "del_dateline", + "value": "del_dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1652 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1665 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "scheduled_approval", + "value": "scheduled_approval", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1684 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "defer_time", + "value": "defer_time", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1695 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1696 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vbpmal_approval_defer_time", + "value": "vbpmal_approval_defer_time", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "additional_user_data", + "value": "additional_user_data", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1727 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_year_message_count", + "value": "last_year_message_count", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "additional_user_data", + "value": "additional_user_data", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1773 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1793 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_year_reputation", + "value": "last_year_reputation", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1815 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "additional_user_data", + "value": "additional_user_data", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1836 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_year_groan_count", + "value": "last_year_groan_count", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1837 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1859 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "paid_post_activation", + "value": "paid_post_activation", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "activation_id", + "value": "activation_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "paid_post_activation_id", + "value": "paid_post_activation_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1921 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alm_Model_UserData", + "value": "alm_Model_UserData", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "credits", + "value": "credits", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1942 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1954 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1959 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1960 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1963 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1967 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 1968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1977 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 1978 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1983 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1985 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 1986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 1990 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 1991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 1998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 1999 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2008 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2013 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2030 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userfield", + "value": "userfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2031 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2040 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2041 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userfield", + "value": "userfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2044 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2054 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2056 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userfield", + "value": "userfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2067 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2073 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2074 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2075 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2076 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2080 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2081 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2089 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2098 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usertextfield", + "value": "usertextfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2099 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usertextfield", + "value": "usertextfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "usertextfield", + "value": "usertextfield", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icon", + "value": "icon", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icon", + "value": "icon", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "icon", + "value": "icon", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "iconid", + "value": "iconid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "iconid", + "value": "iconid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatar", + "value": "avatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatar", + "value": "avatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatar", + "value": "avatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatarid", + "value": "avatarid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "avatarid", + "value": "avatarid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customavatar", + "value": "customavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customavatar", + "value": "customavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customavatar", + "value": "customavatar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2354 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "spamlog", + "value": "spamlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "spamlog", + "value": "spamlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "spamlog", + "value": "spamlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2478 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "primaryid", + "value": "primaryid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "deletionlog", + "value": "deletionlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'post'", + "value": "post", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 2524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2550 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2553 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2561 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "editlog", + "value": "editlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2585 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2586 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2594 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postparsed", + "value": "postparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2614 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2615 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postparsed", + "value": "postparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2629 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2631 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postparsed", + "value": "postparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2632 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2642 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2652 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postparsed", + "value": "postparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "styleid", + "value": "styleid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2688 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "23", + "value": 23, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 2689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2695 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postparsed", + "value": "postparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2696 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "languageid", + "value": "languageid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 2720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2722 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigparsed", + "value": "sigparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigparsed", + "value": "sigparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigparsed", + "value": "sigparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2759 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2769 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2776 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2793 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigparsed", + "value": "sigparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "styleid", + "value": "styleid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2804 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "23", + "value": 23, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 2814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigparsed", + "value": "sigparsed", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "languageid", + "value": "languageid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2841 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 2844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2847 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2857 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2864 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2873 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2876 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sigpic", + "value": "sigpic", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2890 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2891 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2892 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2893 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2905 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2906 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vbppim_post_icon_list", + "value": "vbppim_post_icon_list", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2937 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post_icon_list", + "value": "post_icon_list", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2941 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 2956 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2958 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post_icon_list", + "value": "post_icon_list", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2959 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2973 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post_id", + "value": "post_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 2981 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 2986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 2987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 2993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 2994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vbpmal_log", + "value": "vbpmal_log", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3014 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3015 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedlog", + "value": "approvedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3029 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3030 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3032 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedlog", + "value": "approvedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3045 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "itemid", + "value": "itemid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3064 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3065 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "approvedlog", + "value": "approvedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3080 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "action", + "value": "action", + "keyword": "ACTION", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3081 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'postapprove'", + "value": "postapprove", + "keyword": null, + "type": { + "@type": "@706" + }, + "flags": 1, + "position": 3088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 3103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vbpmal_log", + "value": "vbpmal_log", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedlog", + "value": "movedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedlog", + "value": "movedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "itemid", + "value": "itemid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movedlog", + "value": "movedlog", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "action", + "value": "action", + "keyword": "ACTION", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'postmove'", + "value": "postmove", + "keyword": null, + "type": { + "@type": "@706" + }, + "flags": 1, + "position": 3188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 3200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vbpmal_scheduled_post_approval", + "value": "vbpmal_scheduled_post_approval", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "scheduled_approval", + "value": "scheduled_approval", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "scheduled_approval", + "value": "scheduled_approval", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post_id", + "value": "post_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 3307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vbpsmt_additional_user_data", + "value": "vbpsmt_additional_user_data", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "additional_user_data", + "value": "additional_user_data", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "additional_user_data", + "value": "additional_user_data", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 3412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "market_pp_post_activation_mapping", + "value": "market_pp_post_activation_mapping", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "paid_post_activation", + "value": "paid_post_activation", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "paid_post_activation", + "value": "paid_post_activation", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3503 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post_id", + "value": "post_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 3526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3535 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alm_Model_UserData", + "value": "alm_Model_UserData", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3554 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3555 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alm_Model_UserData", + "value": "alm_Model_UserData", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alm_Model_UserData", + "value": "alm_Model_UserData", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3598 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user_id", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 3606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "user", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "userid", + "value": "userid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 3619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3629 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "postid", + "value": "postid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 3637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3642 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3254399", + "value": 3254399, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3254508", + "value": 3254508, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3254743", + "value": 3254743, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3254817", + "value": 3254817, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3254969", + "value": 3254969, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3675 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3255328", + "value": 3255328, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3690 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3255582", + "value": 3255582, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3698 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3257603", + "value": 3257603, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3257873", + "value": 3257873, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3714 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3258126", + "value": 3258126, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3722 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3258150", + "value": 3258150, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3258254", + "value": 3258254, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3258272", + "value": 3258272, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3739 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3258311", + "value": 3258311, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3260767", + "value": 3260767, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3260770", + "value": 3260770, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3770 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3260776", + "value": 3260776, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3771 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3261180", + "value": 3261180, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3786 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3261263", + "value": 3261263, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3261317", + "value": 3261317, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3261318", + "value": 3261318, + "keyword": null, + "type": { + "@type": "@40" + }, + "flags": 0, + "position": 3803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 3812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 3820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "post", + "value": "post", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 3825 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dateline", + "value": "dateline", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 3826 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "post", + "column": null, + "expr": "post.*", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "post", + "column": "username", + "expr": "post.username", + "alias": "postusername", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "post", + "column": "ipaddress", + "expr": "post.ipaddress", + "alias": "ip", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "IF(post.visible = 2, 1, 0)", + "alias": "isdeleted", + "function": "IF", + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user", + "column": null, + "expr": "user.*", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "userfield", + "column": null, + "expr": "userfield.*", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "usertextfield", + "column": null, + "expr": "usertextfield.*", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "icon", + "column": "title", + "expr": "icon.title", + "alias": "icontitle", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "icon", + "column": "iconpath", + "expr": "icon.iconpath", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "avatar", + "column": "avatarpath", + "expr": "avatar.avatarpath", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NOT ISNULL(customavatar.userid)", + "alias": "hascustomavatar", + "function": "ISNULL", + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "customavatar", + "column": "dateline", + "expr": "customavatar.dateline", + "alias": "avatardateline", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "customavatar", + "column": "width", + "expr": "customavatar.width", + "alias": "avwidth", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "customavatar", + "column": "height", + "expr": "customavatar.height", + "alias": "avheight", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "spamlog", + "column": "postid", + "expr": "spamlog.postid", + "alias": "spamlog_postid", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "deletionlog", + "column": "userid", + "expr": "deletionlog.userid", + "alias": "del_userid", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "deletionlog", + "column": "username", + "expr": "deletionlog.username", + "alias": "del_username", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "deletionlog", + "column": "reason", + "expr": "deletionlog.reason", + "alias": "del_reason", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "editlog", + "column": "userid", + "expr": "editlog.userid", + "alias": "edit_userid", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "editlog", + "column": "username", + "expr": "editlog.username", + "alias": "edit_username", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "editlog", + "column": "dateline", + "expr": "editlog.dateline", + "alias": "edit_dateline", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "editlog", + "column": "reason", + "expr": "editlog.reason", + "alias": "edit_reason", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "editlog", + "column": "hashistory", + "expr": "editlog.hashistory", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "postparsed", + "column": "pagetext_html", + "expr": "postparsed.pagetext_html", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "postparsed", + "column": "hasimages", + "expr": "postparsed.hasimages", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigparsed", + "column": "signatureparsed", + "expr": "sigparsed.signatureparsed", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigparsed", + "column": "hasimages", + "expr": "sigparsed.hasimages", + "alias": "sighasimages", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigpic", + "column": "userid", + "expr": "sigpic.userid", + "alias": "sigpic", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigpic", + "column": "dateline", + "expr": "sigpic.dateline", + "alias": "sigpicdateline", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigpic", + "column": "width", + "expr": "sigpic.width", + "alias": "sigpicwidth", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigpic", + "column": "height", + "expr": "sigpic.height", + "alias": "sigpicheight", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "IF(displaygroupid=0, user.usergroupid, displaygroupid)", + "alias": "displaygroupid", + "function": "IF", + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "infractiongroupid", + "expr": "infractiongroupid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "post_icon_list", + "column": "icon_id_list", + "expr": "post_icon_list.icon_id_list", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "post_icon_list", + "column": "is_auto", + "expr": "post_icon_list.is_auto", + "alias": "icon_is_auto", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "approvedlog", + "column": "modid", + "expr": "approvedlog.modid", + "alias": "approvedmodid", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "approvedlog", + "column": "dateline", + "expr": "approvedlog.dateline", + "alias": "approveddateline", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "approvedlog", + "column": "status", + "expr": "approvedlog.status", + "alias": "approvedstatus", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "approvedlog", + "column": "info", + "expr": "approvedlog.info", + "alias": "approvedinfo", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movedlog", + "column": "modid", + "expr": "movedlog.modid", + "alias": "movedmodid", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movedlog", + "column": "dateline", + "expr": "movedlog.dateline", + "alias": "moveddateline", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movedlog", + "column": "status", + "expr": "movedlog.status", + "alias": "movedstatus", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movedlog", + "column": "info", + "expr": "movedlog.info", + "alias": "movedinfo", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "( SELECT useragent FROM session WHERE userid=post.userid AND lastactivity > 1644859580 ORDER BY lastactivity DESC LIMIT 1 )", + "alias": "useragent", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "IF ( user.userid IS NOT NULL, (SELECT COUNT(usernoteid) FROM usernote AS usernote WHERE usernote.userid=user.userid AND usernote.priority>=0), 0 )", + "alias": "usernotecount", + "function": "IF", + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "deletionlog", + "column": "dateline", + "expr": "deletionlog.dateline", + "alias": "del_dateline", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "scheduled_approval", + "column": "defer_time", + "expr": "scheduled_approval.defer_time", + "alias": "vbpmal_approval_defer_time", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "additional_user_data", + "column": "last_year_message_count", + "expr": "additional_user_data.last_year_message_count", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "additional_user_data", + "column": "last_year_reputation", + "expr": "additional_user_data.last_year_reputation", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "additional_user_data", + "column": "last_year_groan_count", + "expr": "additional_user_data.last_year_groan_count", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "paid_post_activation", + "column": "activation_id", + "expr": "paid_post_activation.activation_id", + "alias": "paid_post_activation_id", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "alm_Model_UserData", + "column": "credits", + "expr": "alm_Model_UserData.credits", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "post", + "column": null, + "expr": "post", + "alias": "post", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "post", + "postid" + ], + "isOperator": false, + "expr": "post.postid IN (0,3254399,3254508,3254743,3254817,3254969,3255328,3255582,3257603,3257873,3258126,3258150,3258254,3258272,3258311,3260767,3260770,3260776,3261180,3261263,3261317,3261318)", + "leftOperand": "post.postid IN (0,3254399,3254508,3254743,3254817,3254969,3255328,3255582,3257603,3257873,3258126,3258150,3258254,3258272,3258311,3260767,3260770,3260776,3261180,3261263,3261317,3261318)", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "post", + "column": "dateline", + "expr": "post.dateline", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "user", + "alias": "user", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "user", + "userid", + "post" + ], + "isOperator": false, + "expr": "(user.userid = post.userid)", + "leftOperand": "(user.userid", + "operator": "=", + "rightOperand": "post.userid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "userfield", + "column": null, + "expr": "userfield", + "alias": "userfield", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "userfield", + "userid", + "user" + ], + "isOperator": false, + "expr": "(userfield.userid = user.userid)", + "leftOperand": "(userfield.userid", + "operator": "=", + "rightOperand": "user.userid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "usertextfield", + "column": null, + "expr": "usertextfield", + "alias": "usertextfield", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "usertextfield", + "userid", + "user" + ], + "isOperator": false, + "expr": "(usertextfield.userid = user.userid)", + "leftOperand": "(usertextfield.userid", + "operator": "=", + "rightOperand": "user.userid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "icon", + "column": null, + "expr": "icon", + "alias": "icon", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "icon", + "iconid", + "post" + ], + "isOperator": false, + "expr": "(icon.iconid = post.iconid)", + "leftOperand": "(icon.iconid", + "operator": "=", + "rightOperand": "post.iconid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "avatar", + "column": null, + "expr": "avatar", + "alias": "avatar", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "avatar", + "avatarid", + "user" + ], + "isOperator": false, + "expr": "(avatar.avatarid = user.avatarid)", + "leftOperand": "(avatar.avatarid", + "operator": "=", + "rightOperand": "user.avatarid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "customavatar", + "column": null, + "expr": "customavatar", + "alias": "customavatar", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "customavatar", + "userid", + "user" + ], + "isOperator": false, + "expr": "(customavatar.userid = user.userid)", + "leftOperand": "(customavatar.userid", + "operator": "=", + "rightOperand": "user.userid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "spamlog", + "column": null, + "expr": "spamlog", + "alias": "spamlog", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "spamlog", + "postid", + "post" + ], + "isOperator": false, + "expr": "(spamlog.postid = post.postid)", + "leftOperand": "(spamlog.postid", + "operator": "=", + "rightOperand": "post.postid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "deletionlog", + "column": null, + "expr": "deletionlog", + "alias": "deletionlog", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "post", + "postid", + "deletionlog", + "primaryid" + ], + "isOperator": false, + "expr": "(post.postid = deletionlog.primaryid", + "leftOperand": "(post.postid", + "operator": "=", + "rightOperand": "deletionlog.primaryid" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "deletionlog", + "type", + "post" + ], + "isOperator": false, + "expr": "deletionlog.type = 'post')", + "leftOperand": "deletionlog.type", + "operator": "=", + "rightOperand": "'post')" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "editlog", + "column": null, + "expr": "editlog", + "alias": "editlog", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "editlog", + "postid", + "post" + ], + "isOperator": false, + "expr": "(editlog.postid = post.postid)", + "leftOperand": "(editlog.postid", + "operator": "=", + "rightOperand": "post.postid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "postparsed", + "column": null, + "expr": "postparsed", + "alias": "postparsed", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "postparsed", + "postid", + "post" + ], + "isOperator": false, + "expr": "(postparsed.postid = post.postid", + "leftOperand": "(postparsed.postid", + "operator": "=", + "rightOperand": "post.postid" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "postparsed", + "styleid" + ], + "isOperator": false, + "expr": "postparsed.styleid = 23", + "leftOperand": "postparsed.styleid", + "operator": "=", + "rightOperand": "23" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "postparsed", + "languageid" + ], + "isOperator": false, + "expr": "postparsed.languageid = 5)", + "leftOperand": "postparsed.languageid", + "operator": "=", + "rightOperand": "5)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigparsed", + "column": null, + "expr": "sigparsed", + "alias": "sigparsed", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "sigparsed", + "userid", + "user" + ], + "isOperator": false, + "expr": "(sigparsed.userid = user.userid", + "leftOperand": "(sigparsed.userid", + "operator": "=", + "rightOperand": "user.userid" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "sigparsed", + "styleid" + ], + "isOperator": false, + "expr": "sigparsed.styleid = 23", + "leftOperand": "sigparsed.styleid", + "operator": "=", + "rightOperand": "23" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "sigparsed", + "languageid" + ], + "isOperator": false, + "expr": "sigparsed.languageid = 5)", + "leftOperand": "sigparsed.languageid", + "operator": "=", + "rightOperand": "5)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "sigpic", + "column": null, + "expr": "sigpic", + "alias": "sigpic", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "sigpic", + "userid", + "post" + ], + "isOperator": false, + "expr": "(sigpic.userid = post.userid)", + "leftOperand": "(sigpic.userid", + "operator": "=", + "rightOperand": "post.userid)" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "vbppim_post_icon_list", + "column": null, + "expr": "vbppim_post_icon_list", + "alias": "post_icon_list", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "post_icon_list", + "post_id", + "post", + "postid" + ], + "isOperator": false, + "expr": "post_icon_list.post_id=post.postid", + "leftOperand": "post_icon_list.post_id", + "operator": "=", + "rightOperand": "post.postid" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "vbpmal_log", + "column": null, + "expr": "vbpmal_log", + "alias": "approvedlog", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "approvedlog", + "itemid", + "post", + "postid" + ], + "isOperator": false, + "expr": "(approvedlog.itemid=post.postid", + "leftOperand": "(approvedlog.itemid", + "operator": "=", + "rightOperand": "post.postid" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "approvedlog", + "action", + "postapprove" + ], + "isOperator": false, + "expr": "approvedlog.action='postapprove')", + "leftOperand": "approvedlog.action", + "operator": "=", + "rightOperand": "'postapprove')" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "vbpmal_log", + "column": null, + "expr": "vbpmal_log", + "alias": "movedlog", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "movedlog", + "itemid", + "post", + "postid" + ], + "isOperator": false, + "expr": "(movedlog.itemid=post.postid", + "leftOperand": "(movedlog.itemid", + "operator": "=", + "rightOperand": "post.postid" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "movedlog", + "action", + "postmove" + ], + "isOperator": false, + "expr": "movedlog.action='postmove')", + "leftOperand": "movedlog.action", + "operator": "=", + "rightOperand": "'postmove')" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "vbpmal_scheduled_post_approval", + "column": null, + "expr": "vbpmal_scheduled_post_approval", + "alias": "scheduled_approval", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "scheduled_approval", + "post_id", + "post", + "postid" + ], + "isOperator": false, + "expr": "scheduled_approval.post_id = post.postid", + "leftOperand": "scheduled_approval.post_id", + "operator": "=", + "rightOperand": "post.postid" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "vbpsmt_additional_user_data", + "column": null, + "expr": "vbpsmt_additional_user_data", + "alias": "additional_user_data", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "additional_user_data", + "userid", + "post" + ], + "isOperator": false, + "expr": "additional_user_data.userid=post.userid", + "leftOperand": "additional_user_data.userid", + "operator": "=", + "rightOperand": "post.userid" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "market_pp_post_activation_mapping", + "column": null, + "expr": "market_pp_post_activation_mapping", + "alias": "paid_post_activation", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "paid_post_activation", + "post_id", + "post", + "postid" + ], + "isOperator": false, + "expr": "paid_post_activation.post_id = post.postid", + "leftOperand": "paid_post_activation.post_id", + "operator": "=", + "rightOperand": "post.postid" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "alm_Model_UserData", + "column": null, + "expr": "alm_Model_UserData", + "alias": "alm_Model_UserData", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "alm_Model_UserData", + "user_id", + "user", + "userid" + ], + "isOperator": false, + "expr": "alm_Model_UserData.user_id=user.userid", + "leftOperand": "alm_Model_UserData.user_id", + "operator": "=", + "rightOperand": "user.userid" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 1033 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect14.in b/tests/data/parser/parseSelect14.in new file mode 100644 index 000000000..60953ad11 --- /dev/null +++ b/tests/data/parser/parseSelect14.in @@ -0,0 +1 @@ +SELECT tbl.id, NOT tbl.id FROM tbl \ No newline at end of file diff --git a/tests/data/parser/parseSelect14.out b/tests/data/parser/parseSelect14.out new file mode 100644 index 000000000..427689626 --- /dev/null +++ b/tests/data/parser/parseSelect14.out @@ -0,0 +1,288 @@ +{ + "query": "SELECT tbl.id, NOT tbl.id FROM tbl", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT tbl.id, NOT tbl.id FROM tbl", + "len": 34, + "last": 34, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": "id", + "expr": "tbl.id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "NOT tbl.id", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl", + "column": null, + "expr": "tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect15.in b/tests/data/parser/parseSelect15.in new file mode 100644 index 000000000..a98555783 --- /dev/null +++ b/tests/data/parser/parseSelect15.in @@ -0,0 +1 @@ +SELECT `````` FROM ``````; \ No newline at end of file diff --git a/tests/data/parser/parseSelect15.out b/tests/data/parser/parseSelect15.out new file mode 100644 index 000000000..40f2c4da2 --- /dev/null +++ b/tests/data/parser/parseSelect15.out @@ -0,0 +1,188 @@ +{ + "query": "SELECT `````` FROM ``````;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT `````` FROM ``````;", + "len": 26, + "last": 26, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "``````", + "value": "``", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "``````", + "value": "``", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "``", + "expr": "``````", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "``", + "column": null, + "expr": "``````", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect16.in b/tests/data/parser/parseSelect16.in new file mode 100644 index 000000000..83f4356c2 --- /dev/null +++ b/tests/data/parser/parseSelect16.in @@ -0,0 +1,20 @@ +SELECT +p.aa, +p.bb, +CASE +WHEN p.cc = 'Y' and dd = 'Found' then '99.99999' +WHEN p.cc = '' and dd = 'Found' then '00.00000' + ELSE '99.99999' END as RR, +CASE +WHEN dd = 'Found' then 'Y' + ELSE 'N' END as RRI, +CASE + WHEN (SELECT MAX(cd) from LSA act group by act.an having p.acn = act.an) > '2021-01-28' THEN '06/30/2020' + WHEN p.co < '2021-01-28' THEN '12/31/2019' + ELSE '06/30/2020' END as DAOD +FROM `LTKP` p +left join `LQA` qa +on qa.pi = p.ID +left join LSA act +on p.acn = act.an +where p.a =1 and p.mr = 1 and p.sc<> '23' and qa.qt = 'TEXT' and p.tl = "TEXT" and qa.a = 1 \ No newline at end of file diff --git a/tests/data/parser/parseSelect16.out b/tests/data/parser/parseSelect16.out new file mode 100644 index 000000000..b724afa8b --- /dev/null +++ b/tests/data/parser/parseSelect16.out @@ -0,0 +1,3420 @@ +{ + "query": "SELECT\np.aa,\np.bb,\nCASE\nWHEN p.cc = 'Y' and dd = 'Found' then '99.99999'\nWHEN p.cc = '' and dd = 'Found' then '00.00000'\n ELSE '99.99999' END as RR,\nCASE\nWHEN dd = 'Found' then 'Y'\n ELSE 'N' END as RRI,\nCASE\n\tWHEN (SELECT MAX(cd) from LSA act group by act.an having p.acn = act.an) > '2021-01-28' THEN '06/30/2020'\n WHEN p.co < '2021-01-28' THEN '12/31/2019'\n ELSE '06/30/2020' END as DAOD\nFROM `LTKP` p\nleft join `LQA` qa\non qa.pi = p.ID\nleft join LSA act\non p.acn = act.an\nwhere p.a =1 and p.mr = 1 and p.sc<> '23' and qa.qt = 'TEXT' and p.tl = \"TEXT\" and qa.a = 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT\np.aa,\np.bb,\nCASE\nWHEN p.cc = 'Y' and dd = 'Found' then '99.99999'\nWHEN p.cc = '' and dd = 'Found' then '00.00000'\n ELSE '99.99999' END as RR,\nCASE\nWHEN dd = 'Found' then 'Y'\n ELSE 'N' END as RRI,\nCASE\n\tWHEN (SELECT MAX(cd) from LSA act group by act.an having p.acn = act.an) > '2021-01-28' THEN '06/30/2020'\n WHEN p.co < '2021-01-28' THEN '12/31/2019'\n ELSE '06/30/2020' END as DAOD\nFROM `LTKP` p\nleft join `LQA` qa\non qa.pi = p.ID\nleft join LSA act\non p.acn = act.an\nwhere p.a =1 and p.mr = 1 and p.sc<> '23' and qa.qt = 'TEXT' and p.tl = \"TEXT\" and qa.a = 1", + "len": 579, + "last": 579, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 263, + "idx": 263, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aa", + "value": "aa", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bb", + "value": "bb", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASE", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEN", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cc", + "value": "cc", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Y'", + "value": "Y", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dd", + "value": "dd", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Found'", + "value": "Found", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'99.99999'", + "value": "99.99999", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEN", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cc", + "value": "cc", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dd", + "value": "dd", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Found'", + "value": "Found", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'00.00000'", + "value": "00.00000", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ELSE", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'99.99999'", + "value": "99.99999", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RR", + "value": "RR", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASE", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEN", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "dd", + "value": "dd", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Found'", + "value": "Found", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Y'", + "value": "Y", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ELSE", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'N'", + "value": "N", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RRI", + "value": "RRI", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASE", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\t", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEN", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX", + "value": "MAX", + "keyword": "MAX", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cd", + "value": "cd", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LSA", + "value": "LSA", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "act", + "value": "act", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "group by", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "act", + "value": "act", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "an", + "value": "an", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "having", + "value": "HAVING", + "keyword": "HAVING", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "acn", + "value": "acn", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "act", + "value": "act", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "an", + "value": "an", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2021-01-28'", + "value": "2021-01-28", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'06/30/2020'", + "value": "06/30/2020", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEN", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "co", + "value": "co", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2021-01-28'", + "value": "2021-01-28", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 354 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'12/31/2019'", + "value": "12/31/2019", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ELSE", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'06/30/2020'", + "value": "06/30/2020", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAOD", + "value": "DAOD", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`LTKP`", + "value": "LTKP", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`LQA`", + "value": "LQA", + "keyword": null, + "type": { + "@type": "@173" + }, + "flags": 2, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 431 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qa", + "value": "qa", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 432 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qa", + "value": "qa", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pi", + "value": "pi", + "keyword": "PI", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LSA", + "value": "LSA", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "act", + "value": "act", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 471 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "acn", + "value": "acn", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 478 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "act", + "value": "act", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "an", + "value": "an", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 484 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mr", + "value": "mr", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@221" + }, + "flags": 0, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sc", + "value": "sc", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 520 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<>", + "value": "<>", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'23'", + "value": "23", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 529 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qa", + "value": "qa", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qt", + "value": "qt", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'TEXT'", + "value": "TEXT", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 1, + "position": 542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 553 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 554 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tl", + "value": "tl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 555 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"TEXT\"", + "value": "TEXT", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 2, + "position": 560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qa", + "value": "qa", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 574 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 575 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@221" + }, + "flags": 0, + "position": 578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "aa", + "expr": "p.aa", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "p", + "column": "bb", + "expr": "p.bb", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "cc", + "Y" + ], + "isOperator": false, + "expr": "p.cc = 'Y'", + "leftOperand": "p.cc", + "operator": "=", + "rightOperand": "'Y'" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "dd", + "Found" + ], + "isOperator": false, + "expr": "dd = 'Found'", + "leftOperand": "dd", + "operator": "=", + "rightOperand": "'Found'" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "cc", + "" + ], + "isOperator": false, + "expr": "p.cc = ''", + "leftOperand": "p.cc", + "operator": "=", + "rightOperand": "''" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "dd", + "Found" + ], + "isOperator": false, + "expr": "dd = 'Found'", + "leftOperand": "dd", + "operator": "=", + "rightOperand": "'Found'" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "99.99999", + "expr": "'99.99999'", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "00.00000", + "expr": "'00.00000'", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "99.99999", + "expr": "'99.99999'", + "alias": null, + "function": null, + "subquery": null + }, + "alias": "RR", + "expr": "CASE WHEN p.cc = 'Y' AND dd = 'Found' THEN '99.99999' WHEN p.cc = '' AND dd = 'Found' THEN '00.00000' ELSE '99.99999' END AS `RR`" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "dd", + "Found" + ], + "isOperator": false, + "expr": "dd = 'Found'", + "leftOperand": "dd", + "operator": "=", + "rightOperand": "'Found'" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Y", + "expr": "'Y'", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "N", + "expr": "'N'", + "alias": null, + "function": null, + "subquery": null + }, + "alias": "RRI", + "expr": "CASE WHEN dd = 'Found' THEN 'Y' ELSE 'N' END AS `RRI`" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "MAX", + "cd", + "LSA", + "act", + "an", + "p", + "acn", + "2021-01-28" + ], + "isOperator": false, + "expr": "(SELECT MAX(cd) from LSA act group by act.an having p.acn = act.an) > '2021-01-28'", + "leftOperand": "(SELECT MAX(cd) from LSA act group by act.an having p.acn = act.an)", + "operator": ">", + "rightOperand": "'2021-01-28'" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "co", + "2021-01-28" + ], + "isOperator": false, + "expr": "p.co < '2021-01-28'", + "leftOperand": "p.co", + "operator": "<", + "rightOperand": "'2021-01-28'" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "06/30/2020", + "expr": "'06/30/2020'", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "12/31/2019", + "expr": "'12/31/2019'", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "06/30/2020", + "expr": "'06/30/2020'", + "alias": null, + "function": null, + "subquery": null + }, + "alias": "DAOD", + "expr": "CASE WHEN (SELECT MAX(cd) from LSA act group by act.an having p.acn = act.an) > '2021-01-28' THEN '06/30/2020' WHEN p.co < '2021-01-28' THEN '12/31/2019' ELSE '06/30/2020' END AS `DAOD`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "LTKP", + "column": null, + "expr": "`LTKP`", + "alias": "p", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "a" + ], + "isOperator": false, + "expr": "p.a =1", + "leftOperand": "p.a", + "operator": "=", + "rightOperand": "1" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "mr" + ], + "isOperator": false, + "expr": "p.mr = 1", + "leftOperand": "p.mr", + "operator": "=", + "rightOperand": "1" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "sc", + "23" + ], + "isOperator": false, + "expr": "p.sc<> '23'", + "leftOperand": "p.sc", + "operator": "<>", + "rightOperand": "'23'" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "qa", + "qt", + "TEXT" + ], + "isOperator": false, + "expr": "qa.qt = 'TEXT'", + "leftOperand": "qa.qt", + "operator": "=", + "rightOperand": "'TEXT'" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "tl", + "TEXT" + ], + "isOperator": false, + "expr": "p.tl = \"TEXT\"", + "leftOperand": "p.tl", + "operator": "=", + "rightOperand": "\"TEXT\"" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "qa", + "a" + ], + "isOperator": false, + "expr": "qa.a = 1", + "leftOperand": "qa.a", + "operator": "=", + "rightOperand": "1" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "LQA", + "column": null, + "expr": "`LQA`", + "alias": "qa", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "qa", + "pi", + "p", + "ID" + ], + "isOperator": false, + "expr": "qa.pi = p.ID", + "leftOperand": "qa.pi", + "operator": "=", + "rightOperand": "p.ID" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "LSA", + "column": null, + "expr": "LSA", + "alias": "act", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "acn", + "act", + "an" + ], + "isOperator": false, + "expr": "p.acn = act.an", + "leftOperand": "p.acn", + "operator": "=", + "rightOperand": "act.an" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 261 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect2.out b/tests/data/parser/parseSelect2.out index 9d3905dfe..2a24adf33 100644 --- a/tests/data/parser/parseSelect2.out +++ b/tests/data/parser/parseSelect2.out @@ -1 +1,476 @@ -a:4:{s:5:"query";s:67:"SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:67:"SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl;";s:3:"len";i:67;s:4:"last";i:67;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:33:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'foo'";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:28;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'baz'";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:35;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"qux";s:5:"value";s:3:"qux";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:48;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:52;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:55;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:57;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"tabl";s:5:"value";s:4:"tabl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:62;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:66;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:33;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:14:"(SELECT 'foo')";s:5:"alias";s:3:"bar";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:14:"(SELECT 'baz')";s:5:"alias";s:3:"qux";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:1:"a";s:5:"alias";s:1:"b";s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"tabl";s:6:"column";N;s:4:"expr";s:4:"tabl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:30;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl;", + "len": 67, + "last": 67, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 33, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'baz'", + "value": "baz", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qux", + "value": "qux", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tabl", + "value": "tabl", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'foo')", + "alias": "bar", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'baz')", + "alias": "qux", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": "b", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tabl", + "column": null, + "expr": "tabl", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect3.out b/tests/data/parser/parseSelect3.out index 6dce57752..5b6375be6 100644 --- a/tests/data/parser/parseSelect3.out +++ b/tests/data/parser/parseSelect3.out @@ -1,7 +1,543 @@ -a:4:{s:5:"query";s:109:"SELECT left_tbl.* -FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id -WHERE right_tbl.id IS NULL;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:109:"SELECT left_tbl.* -FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id -WHERE right_tbl.id IS NULL;";s:3:"len";i:109;s:4:"last";i:109;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:37:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"left_tbl";s:5:"value";s:8:"left_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"left_tbl";s:5:"value";s:8:"left_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LEFT JOIN";s:5:"value";s:9:"LEFT JOIN";s:7:"keyword";s:9:"LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"right_tbl";s:5:"value";s:9:"right_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:52;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"left_tbl";s:5:"value";s:8:"left_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:55;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:63;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:64;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:67;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"right_tbl";s:5:"value";s:9:"right_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:69;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:78;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:79;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"right_tbl";s:5:"value";s:9:"right_tbl";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:88;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:97;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:98;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IS";s:5:"value";s:2:"IS";s:7:"keyword";s:2:"IS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:101;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:103;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:104;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:108;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:37;s:3:"idx";i:37;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"left_tbl";s:6:"column";N;s:4:"expr";s:10:"left_tbl.*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"left_tbl";s:6:"column";N;s:4:"expr";s:8:"left_tbl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:9:"right_tbl";i:1;s:2:"id";}s:10:"isOperator";b:0;s:4:"expr";s:20:"right_tbl.id IS NULL";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:4:"LEFT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"right_tbl";s:6:"column";N;s:4:"expr";s:9:"right_tbl";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:8:"left_tbl";i:1;s:2:"id";i:2;s:9:"right_tbl";}s:10:"isOperator";b:0;s:4:"expr";s:26:"left_tbl.id = right_tbl.id";}}s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:34;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 37, + "idx": 37, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left_tbl", + "value": "left_tbl", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left_tbl", + "value": "left_tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "right_tbl", + "value": "right_tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left_tbl", + "value": "left_tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "right_tbl", + "value": "right_tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "right_tbl", + "value": "right_tbl", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@42" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "left_tbl", + "column": null, + "expr": "left_tbl.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "left_tbl", + "column": null, + "expr": "left_tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "right_tbl", + "id" + ], + "isOperator": false, + "expr": "right_tbl.id IS NULL", + "leftOperand": "right_tbl.id IS NULL", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "right_tbl", + "column": null, + "expr": "right_tbl", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "left_tbl", + "id", + "right_tbl" + ], + "isOperator": false, + "expr": "left_tbl.id = right_tbl.id", + "leftOperand": "left_tbl.id", + "operator": "=", + "rightOperand": "right_tbl.id" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 34 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect4.out b/tests/data/parser/parseSelect4.out index 3599abb07..0fc45296a 100644 --- a/tests/data/parser/parseSelect4.out +++ b/tests/data/parser/parseSelect4.out @@ -1,10 +1,372 @@ -a:4:{s:5:"query";s:54:"SELECT * - FROM test - WHERE RIGHT(name, 2) = 'AB'; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:54:"SELECT * - FROM test - WHERE RIGHT(name, 2) = 'AB'; -";s:3:"len";i:54;s:4:"last";i:54;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"RIGHT";s:5:"value";s:5:"RIGHT";s:7:"keyword";s:5:"RIGHT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:31;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:37;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:43;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:46;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'AB'";s:5:"value";s:2:"AB";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:48;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:52;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:24;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"test";s:6:"column";N;s:4:"expr";s:4:"test";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:4:"name";i:1;s:2:"AB";}s:10:"isOperator";b:0;s:4:"expr";s:21:"RIGHT(name, 2) = 'AB'";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:20;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT *\n FROM test\n WHERE RIGHT(name, 2) = 'AB';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT *\n FROM test\n WHERE RIGHT(name, 2) = 'AB';\n", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RIGHT", + "value": "RIGHT", + "keyword": "RIGHT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'AB'", + "value": "AB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "name", + "AB" + ], + "isOperator": false, + "expr": "RIGHT(name, 2) = 'AB'", + "leftOperand": "RIGHT(name, 2)", + "operator": "=", + "rightOperand": "'AB'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect5.out b/tests/data/parser/parseSelect5.out index e06ec9c53..9c377a171 100644 --- a/tests/data/parser/parseSelect5.out +++ b/tests/data/parser/parseSelect5.out @@ -1,13 +1,658 @@ -a:4:{s:5:"query";s:123:"SELECT c1, c2, c3 - /* Subquery in FROM list */ - FROM (SELECT C1, c2, c3 FROM test2) t1 - WHERE RIGHT(name, 2) = 'AB'; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:123:"SELECT c1, c2, c3 - /* Subquery in FROM list */ - FROM (SELECT C1, c2, c3 FROM test2) t1 - WHERE RIGHT(name, 2) = 'AB'; -";s:3:"len";i:123;s:4:"last";i:123;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:48:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"c1";s:5:"value";s:2:"c1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"c2";s:5:"value";s:2:"c2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:13;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"c3";s:5:"value";s:2:"c3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:15;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:27:"/* Subquery in FROM list */";s:5:"value";s:27:"/* Subquery in FROM list */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:21;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:52;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:57;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:58;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"C1";s:5:"value";s:2:"C1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:65;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:67;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:68;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"c2";s:5:"value";s:2:"c2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:69;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"c3";s:5:"value";s:2:"c3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:73;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:76;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"test2";s:5:"value";s:5:"test2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:81;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:90;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:94;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"RIGHT";s:5:"value";s:5:"RIGHT";s:7:"keyword";s:5:"RIGHT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:100;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:105;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:106;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:110;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:112;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:113;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:114;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:115;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:116;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'AB'";s:5:"value";s:2:"AB";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:117;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:121;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:122;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:48;s:3:"idx";i:48;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"c1";s:4:"expr";s:2:"c1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"c2";s:4:"expr";s:2:"c2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"c3";s:4:"expr";s:2:"c3";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:30:"(SELECT C1, c2, c3 FROM test2)";s:5:"alias";s:2:"t1";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:4:"name";i:1;s:2:"AB";}s:10:"isOperator";b:0;s:4:"expr";s:21:"RIGHT(name, 2) = 'AB'";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:44;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 48, + "idx": 48, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c1", + "value": "c1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c2", + "value": "c2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c3", + "value": "c3", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* Subquery in FROM list */", + "value": "/* Subquery in FROM list */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C1", + "value": "C1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c2", + "value": "c2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c3", + "value": "c3", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test2", + "value": "test2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RIGHT", + "value": "RIGHT", + "keyword": "RIGHT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'AB'", + "value": "AB", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@55" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "c1", + "expr": "c1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "c2", + "expr": "c2", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "c3", + "expr": "c3", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(SELECT C1, c2, c3 FROM test2)", + "alias": "t1", + "function": null, + "subquery": "SELECT" + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "name", + "AB" + ], + "isOperator": false, + "expr": "RIGHT(name, 2) = 'AB'", + "leftOperand": "RIGHT(name, 2)", + "operator": "=", + "rightOperand": "'AB'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 44 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect6.out b/tests/data/parser/parseSelect6.out index 019445100..cb3a2bb23 100644 --- a/tests/data/parser/parseSelect6.out +++ b/tests/data/parser/parseSelect6.out @@ -1,7 +1,750 @@ -a:4:{s:5:"query";s:100:"SELECT * FROM t1 LEFT JOIN (t2, t3, t4) - ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:100:"SELECT * FROM t1 LEFT JOIN (t2, t3, t4) - ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) -";s:3:"len";i:100;s:4:"last";i:100;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:53:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LEFT JOIN";s:5:"value";s:9:"LEFT JOIN";s:7:"keyword";s:9:"LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:17;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t3";s:5:"value";s:2:"t3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:32;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t4";s:5:"value";s:2:"t4";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:38;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:57;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:60;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:61;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:63;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:64;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:65;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:66;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:68;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:69;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:71;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t3";s:5:"value";s:2:"t3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:77;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:78;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:79;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:80;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:82;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:83;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:85;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t4";s:5:"value";s:2:"t4";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:89;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:91;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"c";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:92;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:93;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:94;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:96;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"c";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:97;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:98;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:53;s:3:"idx";i:53;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:4:"LEFT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:12:"(t2, t3, t4)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";a:5:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t2";i:1;s:1:"a";i:2;s:2:"t1";}s:10:"isOperator";b:0;s:4:"expr";s:10:"(t2.a=t1.a";}i:1;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:2;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t3";i:1;s:1:"b";i:2;s:2:"t1";}s:10:"isOperator";b:0;s:4:"expr";s:9:"t3.b=t1.b";}i:3;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:4;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t4";i:1;s:1:"c";i:2;s:2:"t1";}s:10:"isOperator";b:0;s:4:"expr";s:10:"t4.c=t1.c)";}}s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:51;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 53, + "idx": 53, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(t2, t3, t4)", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t2", + "a", + "t1" + ], + "isOperator": false, + "expr": "(t2.a=t1.a", + "leftOperand": "(t2.a", + "operator": "=", + "rightOperand": "t1.a" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t3", + "b", + "t1" + ], + "isOperator": false, + "expr": "t3.b=t1.b", + "leftOperand": "t3.b", + "operator": "=", + "rightOperand": "t1.b" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t4", + "c", + "t1" + ], + "isOperator": false, + "expr": "t4.c=t1.c)", + "leftOperand": "t4.c", + "operator": "=", + "rightOperand": "t1.c)" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect7.out b/tests/data/parser/parseSelect7.out index 800ac7e6b..733fedcef 100644 --- a/tests/data/parser/parseSelect7.out +++ b/tests/data/parser/parseSelect7.out @@ -1,4 +1,761 @@ -a:4:{s:5:"query";s:119:"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)";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:119:"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)";s:3:"len";i:119;s:4:"last";i:119;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:54:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LEFT JOIN";s:5:"value";s:9:"LEFT JOIN";s:7:"keyword";s:9:"LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:17;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CROSS JOIN";s:5:"value";s:10:"CROSS JOIN";s:7:"keyword";s:10:"CROSS JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t3";s:5:"value";s:2:"t3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CROSS JOIN";s:5:"value";s:10:"CROSS JOIN";s:7:"keyword";s:10:"CROSS JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t4";s:5:"value";s:2:"t4";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:56;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:58;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:77;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t2";s:5:"value";s:2:"t2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:81;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:83;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:84;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:85;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:90;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:91;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:94;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t3";s:5:"value";s:2:"t3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:95;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:97;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:98;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:99;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:100;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:102;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:103;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:104;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:105;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:108;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t4";s:5:"value";s:2:"t4";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:109;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:111;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"c";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:112;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:113;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"t1";s:5:"value";s:2:"t1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:114;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:116;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"c";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:117;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:118;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:54;s:3:"idx";i:54;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"t1";s:6:"column";N;s:4:"expr";s:2:"t1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:4:"LEFT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:32:"(t2 CROSS JOIN t3 CROSS JOIN t4)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";a:5:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t2";i:1;s:1:"a";i:2;s:2:"t1";}s:10:"isOperator";b:0;s:4:"expr";s:10:"(t2.a=t1.a";}i:1;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:2;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t3";i:1;s:1:"b";i:2;s:2:"t1";}s:10:"isOperator";b:0;s:4:"expr";s:9:"t3.b=t1.b";}i:3;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:4;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:3:{i:0;s:2:"t4";i:1;s:1:"c";i:2;s:2:"t1";}s:10:"isOperator";b:0;s:4:"expr";s:10:"t4.c=t1.c)";}}s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:52;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 54, + "idx": 54, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [ + "t2", + "a", + "t1" + ], + "isOperator": false, + "expr": "(t2.a=t1.a", + "leftOperand": "(t2.a", + "operator": "=", + "rightOperand": "t1.a" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t3", + "b", + "t1" + ], + "isOperator": false, + "expr": "t3.b=t1.b", + "leftOperand": "t3.b", + "operator": "=", + "rightOperand": "t1.b" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "t4", + "c", + "t1" + ], + "isOperator": false, + "expr": "t4.c=t1.c)", + "leftOperand": "t4.c", + "operator": "=", + "rightOperand": "t1.c)" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 52 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect8.out b/tests/data/parser/parseSelect8.out index dac3a1281..b84436f04 100644 --- a/tests/data/parser/parseSelect8.out +++ b/tests/data/parser/parseSelect8.out @@ -1 +1,498 @@ -a:4:{s:5:"query";s:68:"select * FROM (select Pop FROM MyTable) p join tadaa t where p.x=t.y";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:68:"select * FROM (select Pop FROM MyTable) p join tadaa t where p.x=t.y";s:3:"len";i:68;s:4:"last";i:68;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:34:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"Pop";s:5:"value";s:3:"Pop";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:22;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:26;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"MyTable";s:5:"value";s:7:"MyTable";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:39;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"p";s:5:"value";s:1:"p";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:40;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"join";s:5:"value";s:4:"JOIN";s:7:"keyword";s:4:"JOIN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"tadaa";s:5:"value";s:5:"tadaa";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"t";s:5:"value";s:1:"t";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:54;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"where";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:55;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"p";s:5:"value";s:1:"p";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:61;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:62;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"x";s:5:"value";s:1:"x";s:7:"keyword";s:1:"X";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:63;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"t";s:5:"value";s:1:"t";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:65;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:66;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"y";s:5:"value";s:1:"y";s:7:"keyword";s:1:"Y";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:67;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:34;s:3:"idx";i:34;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:25:"(select Pop FROM MyTable)";s:5:"alias";s:1:"p";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:4:{i:0;s:1:"p";i:1;s:1:"x";i:2;s:1:"t";i:3;s:1:"y";}s:10:"isOperator";b:0;s:4:"expr";s:7:"p.x=t.y";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:4:"JOIN";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"tadaa";s:6:"column";N;s:4:"expr";s:5:"tadaa";s:5:"alias";s:1:"t";s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:32;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "select * FROM (select Pop FROM MyTable) p join tadaa t where p.x=t.y", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Pop", + "value": "Pop", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MyTable", + "value": "MyTable", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "join", + "value": "JOIN", + "keyword": "JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tadaa", + "value": "tadaa", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "y", + "value": "y", + "keyword": "Y", + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(select Pop FROM MyTable)", + "alias": "p", + "function": null, + "subquery": "SELECT" + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "p", + "x", + "t", + "y" + ], + "isOperator": false, + "expr": "p.x=t.y", + "leftOperand": "p.x", + "operator": "=", + "rightOperand": "t.y" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "JOIN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tadaa", + "column": null, + "expr": "tadaa", + "alias": "t", + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelect9.out b/tests/data/parser/parseSelect9.out index 6bb46c4e0..3014931a2 100644 --- a/tests/data/parser/parseSelect9.out +++ b/tests/data/parser/parseSelect9.out @@ -1,10 +1,979 @@ -a:4:{s:5:"query";s:296:"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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:296:"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";s:3:"len";i:296;s:4:"last";i:296;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:70:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"casein_pipe";s:5:"value";s:11:"casein_pipe";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:18;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"email_cp";s:5:"value";s:8:"email_cp";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:28;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"name_first_cp";s:5:"value";s:13:"name_first_cp";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:30;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"name_last_cp";s:5:"value";s:12:"name_last_cp";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:57;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"purpose_pipe";s:5:"value";s:12:"purpose_pipe";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:59;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:72;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:77;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"tbl_comp_person";s:5:"value";s:15:"tbl_comp_person";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:78;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"INNER JOIN";s:5:"value";s:10:"INNER JOIN";s:7:"keyword";s:10:"INNER JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:94;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:104;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"`tbl_pipelist`";s:5:"value";s:12:"tbl_pipelist";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:105;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:119;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:120;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:122;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"tbl_comp_person";s:5:"value";s:15:"tbl_comp_person";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:123;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:138;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"IDp";s:5:"value";s:3:"IDp";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:139;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:143;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:144;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"tbl_pipelist";s:5:"value";s:12:"tbl_pipelist";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:145;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:157;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"IDp";s:5:"value";s:3:"IDp";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:158;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:161;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:162;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:163;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:168;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"casein_pipe";s:5:"value";s:11:"casein_pipe";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:169;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:180;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:">";s:5:"value";s:1:">";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:181;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:182;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"'2016-03-01'";s:5:"value";s:10:"2016-03-01";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:183;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:195;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:196;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:199;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"`campaign_id_pipe`";s:5:"value";s:16:"campaign_id_pipe";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:201;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:219;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:220;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:221;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"24569";s:5:"value";i:24569;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:222;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:227;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"AND";s:5:"value";s:3:"AND";s:7:"keyword";s:3:"AND";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:228;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:231;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"`weeksonlist_pipe`";s:5:"value";s:16:"weeksonlist_pipe";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:232;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:250;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:251;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:252;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:253;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:254;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:255;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:263;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"`tbl_pipelist`";s:5:"value";s:12:"tbl_pipelist";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:264;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:278;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`casein_pipe`";s:5:"value";s:11:"casein_pipe";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:279;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:292;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:293;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:70;s:3:"idx";i:70;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:5:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:11:"casein_pipe";s:4:"expr";s:11:"casein_pipe";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:8:"email_cp";s:4:"expr";s:8:"email_cp";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:13:"name_first_cp";s:4:"expr";s:13:"name_first_cp";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:3;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:12:"name_last_cp";s:4:"expr";s:12:"name_last_cp";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:4;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:12:"purpose_pipe";s:4:"expr";s:12:"purpose_pipe";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:85:"(tbl_comp_person INNER JOIN `tbl_pipelist` ON tbl_comp_person.IDp = tbl_pipelist.IDp)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:5:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:11:"casein_pipe";i:1;s:10:"2016-03-01";}s:10:"isOperator";b:0;s:4:"expr";s:26:"casein_pipe > '2016-03-01'";}i:1;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:2;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:16:"campaign_id_pipe";}s:10:"isOperator";b:0;s:4:"expr";s:26:"`campaign_id_pipe` = 24569";}i:3;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:1;s:4:"expr";s:3:"AND";}i:4;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:16:"weeksonlist_pipe";}s:10:"isOperator";b:0;s:4:"expr";s:22:"`weeksonlist_pipe` = 1";}}s:5:"group";N;s:6:"having";N;s:5:"order";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:12:"tbl_pipelist";s:6:"column";s:11:"casein_pipe";s:4:"expr";s:28:"`tbl_pipelist`.`casein_pipe`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:68;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 70, + "idx": 70, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "casein_pipe", + "value": "casein_pipe", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "email_cp", + "value": "email_cp", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name_first_cp", + "value": "name_first_cp", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name_last_cp", + "value": "name_last_cp", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purpose_pipe", + "value": "purpose_pipe", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_comp_person", + "value": "tbl_comp_person", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl_pipelist`", + "value": "tbl_pipelist", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_comp_person", + "value": "tbl_comp_person", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDp", + "value": "IDp", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_pipelist", + "value": "tbl_pipelist", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDp", + "value": "IDp", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "casein_pipe", + "value": "casein_pipe", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2016-03-01'", + "value": "2016-03-01", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`campaign_id_pipe`", + "value": "campaign_id_pipe", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 2, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "24569", + "value": 24569, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`weeksonlist_pipe`", + "value": "weeksonlist_pipe", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 2, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@61" + }, + "flags": 0, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl_pipelist`", + "value": "tbl_pipelist", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 2, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`casein_pipe`", + "value": "casein_pipe", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 2, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "casein_pipe", + "expr": "casein_pipe", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "email_cp", + "expr": "email_cp", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name_first_cp", + "expr": "name_first_cp", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name_last_cp", + "expr": "name_last_cp", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "purpose_pipe", + "expr": "purpose_pipe", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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 + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "casein_pipe", + "2016-03-01" + ], + "isOperator": false, + "expr": "casein_pipe > '2016-03-01'", + "leftOperand": "casein_pipe", + "operator": ">", + "rightOperand": "'2016-03-01'" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "campaign_id_pipe" + ], + "isOperator": false, + "expr": "`campaign_id_pipe` = 24569", + "leftOperand": "`campaign_id_pipe`", + "operator": "=", + "rightOperand": "24569" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "weeksonlist_pipe" + ], + "isOperator": false, + "expr": "`weeksonlist_pipe` = 1", + "leftOperand": "`weeksonlist_pipe`", + "operator": "=", + "rightOperand": "1" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl_pipelist", + "column": "casein_pipe", + "expr": "`tbl_pipelist`.`casein_pipe`", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 68 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectAggregateWithPartitionAndAlias.in b/tests/data/parser/parseSelectAggregateWithPartitionAndAlias.in new file mode 100644 index 000000000..56d4b5236 --- /dev/null +++ b/tests/data/parser/parseSelectAggregateWithPartitionAndAlias.in @@ -0,0 +1 @@ +SELECT *, COUNT(*) OVER(PARTITION BY `REGION`) AS "count(REGION)" FROM `world_borders` diff --git a/tests/data/parser/parseSelectAggregateWithPartitionAndAlias.out b/tests/data/parser/parseSelectAggregateWithPartitionAndAlias.out new file mode 100644 index 000000000..69bc2ec40 --- /dev/null +++ b/tests/data/parser/parseSelectAggregateWithPartitionAndAlias.out @@ -0,0 +1,391 @@ +{ + "query": "SELECT *, COUNT(*) OVER(PARTITION BY `REGION`) AS \"count(REGION)\" FROM `world_borders`\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT *, COUNT(*) OVER(PARTITION BY `REGION`) AS \"count(REGION)\" FROM `world_borders`\n", + "len": 87, + "last": 87, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 26, + "idx": 26, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OVER", + "value": "OVER", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`REGION`", + "value": "REGION", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"count(REGION)\"", + "value": "count(REGION)", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`world_borders`", + "value": "world_borders", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "COUNT(*) OVER(PARTITION BY `REGION`)", + "alias": "count(REGION)", + "function": "COUNT", + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "world_borders", + "column": null, + "expr": "`world_borders`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCase1.out b/tests/data/parser/parseSelectCase1.out index 3bfc87798..b2eaf36ea 100644 --- a/tests/data/parser/parseSelectCase1.out +++ b/tests/data/parser/parseSelectCase1.out @@ -1,4 +1,695 @@ -a:4:{s:5:"query";s:132:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:132:"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;";s:3:"len";i:132;s:4:"last";i:132;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:50:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:130;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:131;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:50;s:3:"idx";i:50;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";N;s:4:"expr";s:42:"CASE 1 WHEN 1 THEN "Some" ELSE "Other" END";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:47;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 50, + "idx": 50, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@57" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCase2.out b/tests/data/parser/parseSelectCase2.out index 2878bd933..fa4ca0c7a 100644 --- a/tests/data/parser/parseSelectCase2.out +++ b/tests/data/parser/parseSelectCase2.out @@ -1,4 +1,711 @@ -a:4:{s:5:"query";s:138:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:138:"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;";s:3:"len";i:138;s:4:"last";i:138;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:52:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:93;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:98;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:102;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:114;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:126;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:127;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:131;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:135;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:136;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:137;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:52;s:3:"idx";i:52;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";N;s:10:"conditions";a:1:{i:0;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:0:{}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";N;s:4:"expr";s:42:"CASE WHEN 1=1 THEN "Some" ELSE "Other" END";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:49;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 52, + "idx": 52, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@60" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCase3.out b/tests/data/parser/parseSelectCase3.out index 8308cce55..39595608a 100644 --- a/tests/data/parser/parseSelectCase3.out +++ b/tests/data/parser/parseSelectCase3.out @@ -1,4 +1,789 @@ -a:4:{s:5:"query";s:147:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:147:"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;";s:3:"len";i:147;s:4:"last";i:147;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:58:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:93;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:98;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:102;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:114;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:120;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:121;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:122;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:123;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:128;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:135;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:136;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:140;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:144;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:145;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:146;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:58;s:3:"idx";i:58;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";N;s:10:"conditions";a:2:{i:0;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}i:1;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"2=1";}}}s:7:"results";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:0:{}s:11:"else_result";N;s:5:"alias";N;s:4:"expr";s:51:"CASE WHEN 1=1 THEN "Some" WHEN 2=1 THEN "Other" END";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:55;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 58, + "idx": 58, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@66" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "2=1", + "leftOperand": "2", + "operator": "=", + "rightOperand": "1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": null, + "alias": null, + "expr": "CASE WHEN 1=1 THEN \"Some\" WHEN 2=1 THEN \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 55 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCase4.out b/tests/data/parser/parseSelectCase4.out index f60c049cc..856265dde 100644 --- a/tests/data/parser/parseSelectCase4.out +++ b/tests/data/parser/parseSelectCase4.out @@ -1,4 +1,774 @@ -a:4:{s:5:"query";s:145:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:145:"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;";s:3:"len";i:145;s:4:"last";i:145;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:56:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:94;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:95;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:102;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:114;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:121;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:126;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:133;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:134;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:137;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:138;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:143;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:144;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:56;s:3:"idx";i:56;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:7:"1 /* */";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";N;s:5:"alias";N;s:4:"expr";s:55:"CASE 1 /* */ WHEN 1 THEN "Some" WHEN 2 THEN "Other" END";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:53;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 56, + "idx": 56, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@64" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1 /* */", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": null, + "alias": null, + "expr": "CASE 1 /* */ WHEN 1 THEN \"Some\" WHEN 2 THEN \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 53 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCase5.out b/tests/data/parser/parseSelectCase5.out index 30dab3ea8..844b99b5b 100644 --- a/tests/data/parser/parseSelectCase5.out +++ b/tests/data/parser/parseSelectCase5.out @@ -1,4 +1,745 @@ -a:4:{s:5:"query";s:150:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:150:"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;";s:3:"len";i:150;s:4:"last";i:150;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:58:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:92;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:104;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:105;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:112;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:123;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:124;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:126;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:131;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:138;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:139;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:143;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:147;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:148;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:149;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:58;s:3:"idx";i:58;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"test";s:4:"expr";s:60:"test=CASE 1 /* */ WHEN 1 THEN "Some" WHEN 2 THEN "Other" END";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:55;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 58, + "idx": 58, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@50" + }, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@66" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 55 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAlias1.out b/tests/data/parser/parseSelectCaseAlias1.out index 048687dab..39e922a57 100644 --- a/tests/data/parser/parseSelectCaseAlias1.out +++ b/tests/data/parser/parseSelectCaseAlias1.out @@ -1,4 +1,877 @@ -a:4:{s:5:"query";s:166:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:166:"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;";s:3:"len";i:166;s:4:"last";i:166;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:66:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:93;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:98;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:102;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:114;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:120;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:121;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:122;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:123;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:128;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:135;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:136;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:140;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:145;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:146;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:149;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:154;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:155;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:158;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:159;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:163;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:164;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:165;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:66;s:3:"idx";i:66;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";N;s:10:"conditions";a:2:{i:0;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}i:1;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"2=1";}}}s:7:"results";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:0:{}s:11:"else_result";N;s:5:"alias";s:3:"foo";s:4:"expr";s:60:"CASE WHEN 1=1 THEN "Some" WHEN 2=1 THEN "Other" END AS `foo`";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:63;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 66, + "idx": 66, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 2, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@74" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "2=1", + "leftOperand": "2", + "operator": "=", + "rightOperand": "1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": null, + "alias": "foo", + "expr": "CASE WHEN 1=1 THEN \"Some\" WHEN 2=1 THEN \"Other\" END AS `foo`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 63 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAlias2.out b/tests/data/parser/parseSelectCaseAlias2.out index f2990a37d..ccdd98d33 100644 --- a/tests/data/parser/parseSelectCaseAlias2.out +++ b/tests/data/parser/parseSelectCaseAlias2.out @@ -1,4 +1,833 @@ -a:4:{s:5:"query";s:157:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:157:"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;";s:3:"len";i:157;s:4:"last";i:157;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:62:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:92;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:93;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:98;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:102;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:114;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:120;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:121;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:122;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:123;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:128;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:135;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:136;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:140;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:145;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:146;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:149;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:150;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:154;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:155;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:156;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:62;s:3:"idx";i:62;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";N;s:10:"conditions";a:2:{i:0;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}i:1;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"2=1";}}}s:7:"results";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:0:{}s:11:"else_result";N;s:5:"alias";s:3:"foo";s:4:"expr";s:60:"CASE WHEN 1=1 THEN "Some" WHEN 2=1 THEN "Other" END AS `foo`";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:59;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 62, + "idx": 62, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@48" + }, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@70" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "2=1", + "leftOperand": "2", + "operator": "=", + "rightOperand": "1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": null, + "alias": "foo", + "expr": "CASE WHEN 1=1 THEN \"Some\" WHEN 2=1 THEN \"Other\" END AS `foo`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 59 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAlias3.out b/tests/data/parser/parseSelectCaseAlias3.out index 8bbf030ed..8a12568d6 100644 --- a/tests/data/parser/parseSelectCaseAlias3.out +++ b/tests/data/parser/parseSelectCaseAlias3.out @@ -1,4 +1,833 @@ -a:4:{s:5:"query";s:169:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:169:"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;";s:3:"len";i:169;s:4:"last";i:169;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:66:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:92;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:104;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:105;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:112;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:123;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:124;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:126;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:131;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:138;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:139;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:143;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:149;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:151;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:152;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:157;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:158;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:161;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:162;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:166;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:167;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:168;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:66;s:3:"idx";i:66;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"test";s:4:"expr";s:69:"test=CASE 1 /* */ WHEN 1 THEN "Some" WHEN 2 THEN "Other" END AS `foo`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:63;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 66, + "idx": 66, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@50" + }, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 2, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@74" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 63 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAlias4.out b/tests/data/parser/parseSelectCaseAlias4.out index 874c8f39a..f49d83209 100644 --- a/tests/data/parser/parseSelectCaseAlias4.out +++ b/tests/data/parser/parseSelectCaseAlias4.out @@ -1,4 +1,789 @@ -a:4:{s:5:"query";s:160:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:160:"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;";s:3:"len";i:160;s:4:"last";i:160;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:62:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:92;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:99;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:100;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:104;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:105;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:106;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:107;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:112;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:118;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:119;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:123;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:124;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:126;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:131;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:138;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:139;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"/* */";s:5:"value";s:5:"/* */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:143;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:148;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:149;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:152;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:153;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:157;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:158;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:159;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:62;s:3:"idx";i:62;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"test";s:4:"expr";s:69:"test=CASE 1 /* */ WHEN 1 THEN "Some" WHEN 2 THEN "Other" END AS `foo`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:59;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 62, + "idx": 62, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@50" + }, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* */", + "value": "/* */", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@70" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 59 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAlias5.out b/tests/data/parser/parseSelectCaseAlias5.out index d77052999..5d2cd042d 100644 --- a/tests/data/parser/parseSelectCaseAlias5.out +++ b/tests/data/parser/parseSelectCaseAlias5.out @@ -1,4 +1,739 @@ -a:4:{s:5:"query";s:150:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:150:"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;";s:3:"len";i:150;s:4:"last";i:150;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:54:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:""string value"";s:5:"value";s:12:"string value";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:128;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:143;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:147;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:148;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:149;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:54;s:3:"idx";i:54;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";s:12:"string value";s:4:"expr";s:60:"CASE 1 WHEN 1 THEN "Some" ELSE "Other" END AS `string value`";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:51;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 54, + "idx": 54, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"string value\"", + "value": "string value", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@61" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAlias6.out b/tests/data/parser/parseSelectCaseAlias6.out index afc14b1a9..69d24c652 100644 --- a/tests/data/parser/parseSelectCaseAlias6.out +++ b/tests/data/parser/parseSelectCaseAlias6.out @@ -1,4 +1,741 @@ -a:4:{s:5:"query";s:150:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:150:"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;";s:3:"len";i:150;s:4:"last";i:150;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:54:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"`symbol_value`";s:5:"value";s:12:"symbol_value";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:128;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:143;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:147;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:148;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:149;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:54;s:3:"idx";i:54;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";s:12:"symbol_value";s:4:"expr";s:60:"CASE 1 WHEN 1 THEN "Some" ELSE "Other" END AS `symbol_value`";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:51;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 54, + "idx": 54, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`symbol_value`", + "value": "symbol_value", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAliasErr1.out b/tests/data/parser/parseSelectCaseAliasErr1.out index 454fe1c48..7a11f9065 100644 --- a/tests/data/parser/parseSelectCaseAliasErr1.out +++ b/tests/data/parser/parseSelectCaseAliasErr1.out @@ -1,4 +1,790 @@ -a:4:{s:5:"query";s:142:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:142:"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;";s:3:"len";i:142;s:4:"last";i:142;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:56:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:128;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:130;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:131;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:134;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:135;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:139;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:140;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:141;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:56;s:3:"idx";i:56;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";N;s:4:"expr";s:42:"CASE 1 WHEN 1 THEN "Some" ELSE "Other" END";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:53;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:45:"Potential duplicate alias of CASE expression.";i:1;r:338;i:2;i:0;}i:1;a:3:{i:0;s:31:"An alias was expected after AS.";i:1;r:331;i:2;i:0;}i:2;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:338;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:352;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 56, + "idx": 56, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@63" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 53 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Potential duplicate alias of CASE expression.", + { + "@type": "@55" + }, + 0 + ], + [ + "An alias was expected after AS.", + { + "@type": "@54" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@55" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@57" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAliasErr2.out b/tests/data/parser/parseSelectCaseAliasErr2.out index 77a6b445e..5d66665b0 100644 --- a/tests/data/parser/parseSelectCaseAliasErr2.out +++ b/tests/data/parser/parseSelectCaseAliasErr2.out @@ -1,4 +1,725 @@ -a:4:{s:5:"query";s:135:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:135:"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;";s:3:"len";i:135;s:4:"last";i:135;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:52:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:128;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:132;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:133;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:134;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:52;s:3:"idx";i:52;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";N;s:4:"expr";s:42:"CASE 1 WHEN 1 THEN "Some" ELSE "Other" END";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:49;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:39:"An alias expected after AS but got FROM";i:1;r:338;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 52, + "idx": 52, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@59" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias expected after AS but got FROM", + { + "@type": "@55" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAliasErr3.out b/tests/data/parser/parseSelectCaseAliasErr3.out index 7a575d180..b0b3367d7 100644 --- a/tests/data/parser/parseSelectCaseAliasErr3.out +++ b/tests/data/parser/parseSelectCaseAliasErr3.out @@ -1,4 +1,776 @@ -a:4:{s:5:"query";s:143:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:143:"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;";s:3:"len";i:143;s:4:"last";i:143;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:56:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:128;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:132;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:135;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:136;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:140;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:141;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:142;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:56;s:3:"idx";i:56;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"Other";s:4:"expr";s:7:""Other"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";s:3:"foo";s:4:"expr";s:51:"CASE 1 WHEN 1 THEN "Some" ELSE "Other" END AS `foo`";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:53;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:30:"An alias was previously found.";i:1;r:352;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:352;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 56, + "idx": 56, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@63" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 53 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@57" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@57" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseAliasErr4.out b/tests/data/parser/parseSelectCaseAliasErr4.out index d75e3e7a4..b6896fe1b 100644 --- a/tests/data/parser/parseSelectCaseAliasErr4.out +++ b/tests/data/parser/parseSelectCaseAliasErr4.out @@ -1 +1,406 @@ -a:4:{s:5:"query";s:76:"SELECT CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END AS ;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:76:"SELECT CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END AS ;";s:3:"len";i:76;s:4:"last";i:76;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:26:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"CASE";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"WHEN";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"IS";s:5:"value";s:2:"IS";s:7:"keyword";s:2:"IS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"NULL";s:5:"value";s:4:"NULL";s:7:"keyword";s:4:"NULL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"THEN";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:27;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:""this is true"";s:5:"value";s:12:"this is true";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:32;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"ELSE";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:47;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:""this is false"";s:5:"value";s:13:"this is false";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:52;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"END";s:5:"value";s:3:"END";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:68;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:72;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:75;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:26;s:3:"idx";i:26;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:1:{i:0;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";N;s:10:"conditions";a:1:{i:0;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:9:"2 IS NULL";}}}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:12:"this is true";s:4:"expr";s:14:""this is true"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:0:{}s:11:"else_result";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:13:"this is false";s:4:"expr";s:15:""this is false"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"alias";N;s:4:"expr";s:64:"CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END";}}s:4:"from";a:0:{}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:23;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:31:"An alias was expected after AS.";i:1;r:170;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT CASE WHEN 2 IS NULL THEN \"this is true\" ELSE \"this is false\" END AS ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 26, + "idx": 26, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASE", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEN", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"this is true\"", + "value": "this is true", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ELSE", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"this is false\"", + "value": "this is false", + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 2, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "2 IS NULL", + "leftOperand": "2 IS NULL", + "operator": "", + "rightOperand": "" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "this is true", + "expr": "\"this is true\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [], + "elseResult": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was expected after AS.", + { + "@type": "@29" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseErr1.out b/tests/data/parser/parseSelectCaseErr1.out index e68235ed5..dee8070d2 100644 --- a/tests/data/parser/parseSelectCaseErr1.out +++ b/tests/data/parser/parseSelectCaseErr1.out @@ -1 +1,728 @@ -a:4:{s:5:"query";s:132:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:132:"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;";s:3:"len";i:132;s:4:"last";i:132;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:50:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:130;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:131;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:50;s:3:"idx";i:50;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:0:{}s:14:"compare_values";a:0:{}s:11:"else_result";N;s:5:"alias";N;s:4:"expr";s:0:"";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:47;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:9:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:226;i:2;i:0;}i:1;a:3:{i:0;s:33:"Unexpected end of CASE expression";i:1;r:219;i:2;i:0;}i:2;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:226;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:240;i:2;i:0;}i:4;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:254;i:2;i:0;}i:5;a:3:{i:0;s:17:"Unexpected token.";i:1;r:268;i:2;i:0;}i:6;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:282;i:2;i:0;}i:7;a:3:{i:0;s:17:"Unexpected token.";i:1;r:296;i:2;i:0;}i:8;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:310;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 50, + "idx": 50, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@57" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [], + "compareValues": [], + "elseResult": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@38" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@37" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@38" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@40" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@42" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@44" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@47" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@49" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@51" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseErr2.out b/tests/data/parser/parseSelectCaseErr2.out index aedbe1cd4..139b9babd 100644 --- a/tests/data/parser/parseSelectCaseErr2.out +++ b/tests/data/parser/parseSelectCaseErr2.out @@ -1,4 +1,733 @@ -a:4:{s:5:"query";s:132:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:132:"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;";s:3:"len";i:132;s:4:"last";i:132;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:50:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:92;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:130;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:131;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:50;s:3:"idx";i:50;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";N;s:10:"conditions";a:0:{}s:7:"results";a:0:{}s:14:"compare_values";a:0:{}s:11:"else_result";N;s:5:"alias";N;s:4:"expr";s:0:"";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:47;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:11:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:212;i:2;i:0;}i:1;a:3:{i:0;s:33:"Unexpected end of CASE expression";i:1;r:205;i:2;i:0;}i:2;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:212;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:226;i:2;i:0;}i:4;a:3:{i:0;s:17:"Unexpected token.";i:1;r:233;i:2;i:0;}i:5;a:3:{i:0;s:17:"Unexpected token.";i:1;r:240;i:2;i:0;}i:6;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:254;i:2;i:0;}i:7;a:3:{i:0;s:17:"Unexpected token.";i:1;r:268;i:2;i:0;}i:8;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:282;i:2;i:0;}i:9;a:3:{i:0;s:17:"Unexpected token.";i:1;r:296;i:2;i:0;}i:10;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:310;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 50, + "idx": 50, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@57" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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": [], + "compareValues": [], + "elseResult": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@36" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@35" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@36" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@38" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@39" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@40" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@42" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@44" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@47" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@49" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@51" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseErr3.out b/tests/data/parser/parseSelectCaseErr3.out index 8f618c81e..c92715621 100644 --- a/tests/data/parser/parseSelectCaseErr3.out +++ b/tests/data/parser/parseSelectCaseErr3.out @@ -1,4 +1,717 @@ -a:4:{s:5:"query";s:132:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:132:"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;";s:3:"len";i:132;s:4:"last";i:132;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:50:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:92;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:130;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:131;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:50;s:3:"idx";i:50;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";N;s:10:"conditions";a:1:{i:0;a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}}s:7:"results";a:0:{}s:14:"compare_values";a:0:{}s:11:"else_result";N;s:5:"alias";N;s:4:"expr";s:0:"";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:47;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:7:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:254;i:2;i:0;}i:1;a:3:{i:0;s:33:"Unexpected end of CASE expression";i:1;r:247;i:2;i:0;}i:2;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:254;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:268;i:2;i:0;}i:4;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:282;i:2;i:0;}i:5;a:3:{i:0;s:17:"Unexpected token.";i:1;r:296;i:2;i:0;}i:6;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:310;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 50, + "idx": 50, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@57" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ] + ], + "results": [], + "compareValues": [], + "elseResult": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@42" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@41" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@42" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@44" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@47" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@49" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@51" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseErr4.out b/tests/data/parser/parseSelectCaseErr4.out index ae2e63e99..b543f8a7b 100644 --- a/tests/data/parser/parseSelectCaseErr4.out +++ b/tests/data/parser/parseSelectCaseErr4.out @@ -1,4 +1,728 @@ -a:4:{s:5:"query";s:132:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:132:"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;";s:3:"len";i:132;s:4:"last";i:132;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:50:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"else";s:5:"value";s:4:"ELSE";s:7:"keyword";s:4:"ELSE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:120;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:121;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:124;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:125;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:129;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:130;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:131;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:50;s:3:"idx";i:50;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:0:{}s:14:"compare_values";a:0:{}s:11:"else_result";N;s:5:"alias";N;s:4:"expr";s:0:"";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:47;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:9:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:226;i:2;i:0;}i:1;a:3:{i:0;s:33:"Unexpected end of CASE expression";i:1;r:219;i:2;i:0;}i:2;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:226;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:240;i:2;i:0;}i:4;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:254;i:2;i:0;}i:5;a:3:{i:0;s:17:"Unexpected token.";i:1;r:268;i:2;i:0;}i:6;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:282;i:2;i:0;}i:7;a:3:{i:0;s:17:"Unexpected token.";i:1;r:296;i:2;i:0;}i:8;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:310;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 50, + "idx": 50, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@57" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [], + "compareValues": [], + "elseResult": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@38" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@37" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@38" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@40" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@42" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@44" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@47" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@49" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@51" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectCaseErr5.out b/tests/data/parser/parseSelectCaseErr5.out index 18f9bf05a..bec6726d8 100644 --- a/tests/data/parser/parseSelectCaseErr5.out +++ b/tests/data/parser/parseSelectCaseErr5.out @@ -1,4 +1,776 @@ -a:4:{s:5:"query";s:139:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:139:"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;";s:3:"len";i:139;s:4:"last";i:139;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:54:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"mysql";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"help_category";s:5:"value";s:13:"help_category";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:16:"help_category_id";s:5:"value";s:16:"help_category_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:68;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:69;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"name";s:5:"value";s:4:"name";s:7:"keyword";s:4:"NAME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"case";s:5:"value";s:4:"CASE";s:7:"keyword";s:4:"CASE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:88;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:89;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:93;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:94;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:95;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"then";s:5:"value";s:4:"THEN";s:7:"keyword";s:4:"THEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:96;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:100;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Some"";s:5:"value";s:4:"Some";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:101;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:113;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:114;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"when";s:5:"value";s:4:"WHEN";s:7:"keyword";s:4:"WHEN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:115;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:119;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:""Other"";s:5:"value";s:5:"Other";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:120;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"end";s:5:"value";s:3:"end";s:7:"keyword";s:3:"END";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:128;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:132;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:136;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:137;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:138;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:54;s:3:"idx";i:54;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:65:"(SELECT name FROM mysql.help_category WHERE help_category_id = 1)";s:5:"alias";s:4:"name";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:46:"PhpMyAdmin\SqlParser\Components\CaseExpression":7:{s:5:"value";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:10:"conditions";a:0:{}s:7:"results";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Some";s:4:"expr";s:6:""Some"";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:14:"compare_values";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"else_result";N;s:5:"alias";N;s:4:"expr";s:0:"";}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"a";s:6:"column";N;s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";N;s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:51;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:5:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:310;i:2;i:0;}i:1;a:3:{i:0;s:33:"Unexpected end of CASE expression";i:1;r:303;i:2;i:0;}i:2;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:310;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:324;i:2;i:0;}i:4;a:3:{i:0;s:21:"Unrecognized keyword.";i:1;r:338;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 54, + "idx": 54, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@61" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compareValues": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "elseResult": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@51" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@50" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@51" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@53" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@55" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectEndOptions1.out b/tests/data/parser/parseSelectEndOptions1.out index d64918ad5..13ae9cc42 100644 --- a/tests/data/parser/parseSelectEndOptions1.out +++ b/tests/data/parser/parseSelectEndOptions1.out @@ -1 +1,375 @@ -a:4:{s:5:"query";s:86:"SELECT pid, name2 FROM tablename WHERE pid = 20 /* FOR UPDATE end_option */ FOR UPDATE";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:86:"SELECT pid, name2 FROM tablename WHERE pid = 20 /* FOR UPDATE end_option */ FOR UPDATE";s:3:"len";i:86;s:4:"last";i:86;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"name2";s:5:"value";s:5:"name2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"tablename";s:5:"value";s:9:"tablename";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:43;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"20";s:5:"value";i:20;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:27:"/* FOR UPDATE end_option */";s:5:"value";s:27:"/* FOR UPDATE end_option */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"FOR UPDATE";s:5:"value";s:10:"FOR UPDATE";s:7:"keyword";s:10:"FOR UPDATE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:76;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:23;s:3:"idx";i:23;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:3:"pid";s:4:"expr";s:3:"pid";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"name2";s:4:"expr";s:5:"name2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"tablename";s:6:"column";N;s:4:"expr";s:9:"tablename";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:3:"pid";}s:10:"isOperator";b:0;s:4:"expr";s:8:"pid = 20";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:10:"FOR UPDATE";}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:21;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT pid, name2 FROM tablename WHERE pid = 20 /* FOR UPDATE end_option */ FOR UPDATE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT pid, name2 FROM tablename WHERE pid = 20 /* FOR UPDATE end_option */ FOR UPDATE", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* FOR UPDATE end_option */", + "value": "/* FOR UPDATE end_option */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR UPDATE", + "value": "FOR UPDATE", + "keyword": "FOR UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20", + "leftOperand": "pid", + "operator": "=", + "rightOperand": "20" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "FOR UPDATE" + } + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectEndOptions2.out b/tests/data/parser/parseSelectEndOptions2.out index 60ca560cf..f05195d7b 100644 --- a/tests/data/parser/parseSelectEndOptions2.out +++ b/tests/data/parser/parseSelectEndOptions2.out @@ -1,4 +1,375 @@ -a:4:{s:5:"query";s:102:"SELECT pid, name2 FROM tablename WHERE pid = 20 -/* LOCK IN SHARE MODE end_option */ LOCK IN SHARE MODE";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:102:"SELECT pid, name2 FROM tablename WHERE pid = 20 -/* LOCK IN SHARE MODE end_option */ LOCK IN SHARE MODE";s:3:"len";i:102;s:4:"last";i:102;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"name2";s:5:"value";s:5:"name2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"tablename";s:5:"value";s:9:"tablename";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:43;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"20";s:5:"value";i:20;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:35:"/* LOCK IN SHARE MODE end_option */";s:5:"value";s:35:"/* LOCK IN SHARE MODE end_option */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:83;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"LOCK IN SHARE MODE";s:5:"value";s:18:"LOCK IN SHARE MODE";s:7:"keyword";s:18:"LOCK IN SHARE MODE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:84;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:23;s:3:"idx";i:23;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:3:"pid";s:4:"expr";s:3:"pid";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"name2";s:4:"expr";s:5:"name2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"tablename";s:6:"column";N;s:4:"expr";s:9:"tablename";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:3:"pid";}s:10:"isOperator";b:0;s:4:"expr";s:8:"pid = 20";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:18:"LOCK IN SHARE MODE";}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:21;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "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": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK IN SHARE MODE", + "value": "LOCK IN SHARE MODE", + "keyword": "LOCK IN SHARE MODE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20", + "leftOperand": "pid", + "operator": "=", + "rightOperand": "20" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOCK IN SHARE MODE" + } + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectEndOptionsErr.out b/tests/data/parser/parseSelectEndOptionsErr.out index 5c88e4e83..022cd3ad6 100644 --- a/tests/data/parser/parseSelectEndOptionsErr.out +++ b/tests/data/parser/parseSelectEndOptionsErr.out @@ -1,7 +1,406 @@ -a:4:{s:5:"query";s:116:"SELECT pid, name2 FROM tablename WHERE pid = 20 -/* USE both end_option, gives error */ -FOR UPDATE LOCK IN SHARE MODE";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:116:"SELECT pid, name2 FROM tablename WHERE pid = 20 -/* USE both end_option, gives error */ -FOR UPDATE LOCK IN SHARE MODE";s:3:"len";i:116;s:4:"last";i:116;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:25:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"name2";s:5:"value";s:5:"name2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"tablename";s:5:"value";s:9:"tablename";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:43;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"20";s:5:"value";i:20;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:45;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:38:"/* USE both end_option, gives error */";s:5:"value";s:38:"/* USE both end_option, gives error */";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:2;s:8:"position";i:48;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"FOR UPDATE";s:5:"value";s:10:"FOR UPDATE";s:7:"keyword";s:10:"FOR UPDATE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:87;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"LOCK IN SHARE MODE";s:5:"value";s:18:"LOCK IN SHARE MODE";s:7:"keyword";s:18:"LOCK IN SHARE MODE";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:98;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:25;s:3:"idx";i:25;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:3:"pid";s:4:"expr";s:3:"pid";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"name2";s:4:"expr";s:5:"name2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"tablename";s:6:"column";N;s:4:"expr";s:9:"tablename";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:3:"pid";}s:10:"isOperator";b:0;s:4:"expr";s:8:"pid = 20";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:1;s:10:"FOR UPDATE";i:3;s:18:"LOCK IN SHARE MODE";}}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:23;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:40:"This option conflicts with "FOR UPDATE".";i:1;r:170;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 25, + "idx": 25, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "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": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR UPDATE", + "value": "FOR UPDATE", + "keyword": "FOR UPDATE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK IN SHARE MODE", + "value": "LOCK IN SHARE MODE", + "keyword": "LOCK IN SHARE MODE", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20", + "leftOperand": "pid", + "operator": "=", + "rightOperand": "20" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": { + "@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 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"FOR UPDATE\".", + { + "@type": "@31" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectErr1.out b/tests/data/parser/parseSelectErr1.out index bf582c1ba..5dccca8f7 100644 --- a/tests/data/parser/parseSelectErr1.out +++ b/tests/data/parser/parseSelectErr1.out @@ -1,40 +1,1059 @@ -a:4:{s:5:"query";s:220:"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;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:220:"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;";s:3:"len";i:220;s:4:"last";i:220;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:77:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ALL";s:5:"value";s:3:"ALL";s:7:"keyword";s:3:"ALL";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DISTINCT";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"MAX_STATEMENT_TIME";s:5:"value";s:18:"MAX_STATEMENT_TIME";s:7:"keyword";s:18:"MAX_STATEMENT_TIME";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:39;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:41;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:48;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:52;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"result";s:5:"value";s:6:"result";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:57;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:63;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:64;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"@idx";s:5:"value";s:3:"idx";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:69;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:73;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:79;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:81;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"test";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:87;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:91;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`users`";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:92;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:99;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:100;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:108;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"AS";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:109;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:112;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:116;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`test`";s:5:"value";s:4:"test";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:121;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:127;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:128;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:133;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"PARTITION";s:5:"value";s:9:"PARTITION";s:7:"keyword";s:9:"PARTITION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:138;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:147;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:148;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p1";s:5:"value";s:2:"p1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:149;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:151;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:152;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"p2";s:5:"value";s:2:"p2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:153;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:155;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:156;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:157;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:162;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:167;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:169;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:">";s:5:"value";s:1:">";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:170;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:171;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:172;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:173;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:174;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:182;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:187;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:195;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"DESC";s:5:"value";s:4:"DESC";s:7:"keyword";s:4:"DESC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:196;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:200;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:201;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:206;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:208;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:209;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:214;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:215;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:216;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:217;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"3";s:5:"value";i:3;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:218;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:219;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:77;s:3:"idx";i:77;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:4:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:5:"1 + 2";s:5:"alias";s:6:"result";s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:4:"@idx";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:3;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:4:"test";s:5:"table";s:5:"users";s:6:"column";s:8:"username";s:4:"expr";s:21:"test.`users`.username";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:4:"test";s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:12:"`test`.users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";O:40:"PhpMyAdmin\SqlParser\Components\ArrayObj":2:{s:3:"raw";a:2:{i:0;s:2:"p1";i:1;s:2:"p2";}s:6:"values";a:2:{i:0;s:2:"p1";i:1;s:2:"p2";}}s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:2:"id";}s:10:"isOperator";b:0;s:4:"expr";s:6:"id > 0";}}s:5:"group";N;s:6:"having";N;s:5:"order";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:8:"username";s:4:"expr";s:8:"username";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:4:"DESC";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:2;s:8:"rowCount";i:3;}s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:3:{i:1;s:3:"ALL";i:3;a:4:{s:4:"name";s:18:"MAX_STATEMENT_TIME";s:6:"equals";b:1;s:4:"expr";s:2:"10";s:5:"value";s:2:"10";}i:13;s:8:"DISTINCT";}}s:5:"first";i:0;s:4:"last";i:74;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:2:{i:0;a:3:{i:0;s:33:"This option conflicts with "ALL".";i:1;r:37;i:2;i:0;}i:1;a:3:{i:0;s:22:"An alias was expected.";i:1;r:261;i:2;i:0;}}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 77, + "idx": 77, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALL", + "value": "ALL", + "keyword": "ALL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_STATEMENT_TIME", + "value": "MAX_STATEMENT_TIME", + "keyword": "MAX_STATEMENT_TIME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`users`", + "value": "users", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 2, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test`", + "value": "test", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 2, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@84" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1 + 2", + "alias": "result", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "@idx", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "test", + "table": "users", + "column": "username", + "expr": "test.`users`.username", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "test", + "table": "users", + "column": null, + "expr": "`test`.users", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "p1", + "p2" + ], + "values": [ + "p1", + "p2" + ] + }, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "id" + ], + "isOperator": false, + "expr": "id > 0", + "leftOperand": "id", + "operator": ">", + "rightOperand": "0" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "username", + "expr": "username", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Desc", + "value": "DESC" + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 3 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": 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 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"ALL\".", + { + "@type": "@8" + }, + 0 + ], + [ + "An alias was expected.", + { + "@type": "@44" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectErr2.out b/tests/data/parser/parseSelectErr2.out index 16a959711..4e02fa27b 100644 --- a/tests/data/parser/parseSelectErr2.out +++ b/tests/data/parser/parseSelectErr2.out @@ -1,4 +1,289 @@ -a:4:{s:5:"query";s:35:"select * from foobar where foo = @ -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:35:"select * from foobar where foo = @ -";s:3:"len";i:35;s:4:"last";i:35;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:16:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"select";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"from";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"foobar";s:5:"value";s:6:"foobar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"where";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:30;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:31;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"@";s:5:"value";s:0:"";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:33;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:16;s:3:"idx";i:16;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"foobar";s:6:"column";N;s:4:"expr";s:6:"foobar";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:3:"foo";i:1;s:0:"";}s:10:"isOperator";b:0;s:4:"expr";s:7:"foo = @";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:14;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:1:{i:0;a:4:{i:0;s:27:"Variable name was expected.";i:1;s:1:" -";i:2;i:34;i:3;i:0;}}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "select * from foobar where foo = @\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "select * from foobar where foo = @\n", + "len": 35, + "last": 35, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foobar", + "value": "foobar", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foobar", + "column": null, + "expr": "foobar", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "foo", + "" + ], + "isOperator": false, + "expr": "foo = @", + "leftOperand": "foo", + "operator": "=", + "rightOperand": "@" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [ + [ + "Variable name was expected.", + "\n", + 34, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectExists.in b/tests/data/parser/parseSelectExists.in new file mode 100644 index 000000000..98d89d790 --- /dev/null +++ b/tests/data/parser/parseSelectExists.in @@ -0,0 +1 @@ +SELECT EXISTS(SELECT 1) diff --git a/tests/data/parser/parseSelectExists.out b/tests/data/parser/parseSelectExists.out new file mode 100644 index 000000000..26a64993e --- /dev/null +++ b/tests/data/parser/parseSelectExists.out @@ -0,0 +1,190 @@ +{ + "query": "SELECT EXISTS(SELECT 1)\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT EXISTS(SELECT 1)\n", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXISTS", + "value": "EXISTS", + "keyword": "EXISTS", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "EXISTS(SELECT 1)", + "alias": null, + "function": "EXISTS", + "subquery": "SELECT" + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectGroupBy.in b/tests/data/parser/parseSelectGroupBy.in new file mode 100644 index 000000000..3685e21b0 --- /dev/null +++ b/tests/data/parser/parseSelectGroupBy.in @@ -0,0 +1,6 @@ +SELECT * FROM movie GROUP BY title; +SELECT * FROM movie GROUP BY 1; +SELECT * FROM movie GROUP BY year, title; +SELECT * FROM movie GROUP BY year WITH ROLLUP; +SELECT * FROM movie GROUP BY year, title WITH ROLLUP; +SELECT * FROM movie GROUP BY year, title WITH ROLLUP ORDER BY year ASC LIMIT 0, 2; diff --git a/tests/data/parser/parseSelectGroupBy.out b/tests/data/parser/parseSelectGroupBy.out new file mode 100644 index 000000000..0281b468e --- /dev/null +++ b/tests/data/parser/parseSelectGroupBy.out @@ -0,0 +1,1670 @@ +{ + "query": "SELECT * FROM movie GROUP BY title;\nSELECT * FROM movie GROUP BY 1;\nSELECT * FROM movie GROUP BY year, title;\nSELECT * FROM movie GROUP BY year WITH ROLLUP;\nSELECT * FROM movie GROUP BY year, title WITH ROLLUP;\nSELECT * FROM movie GROUP BY year, title WITH ROLLUP ORDER BY year ASC LIMIT 0, 2;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM movie GROUP BY title;\nSELECT * FROM movie GROUP BY 1;\nSELECT * FROM movie GROUP BY year, title;\nSELECT * FROM movie GROUP BY year WITH ROLLUP;\nSELECT * FROM movie GROUP BY year, title WITH ROLLUP;\nSELECT * FROM movie GROUP BY year, title WITH ROLLUP ORDER BY year ASC LIMIT 0, 2;\n", + "len": 294, + "last": 294, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 107, + "idx": 107, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH ROLLUP", + "value": "WITH ROLLUP", + "keyword": "WITH ROLLUP", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH ROLLUP", + "value": "WITH ROLLUP", + "keyword": "WITH ROLLUP", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 246 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH ROLLUP", + "value": "WITH ROLLUP", + "keyword": "WITH ROLLUP", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "title", + "expr": "title", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 11, + "last": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "year", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "title", + "expr": "title", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 24, + "last": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "year", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "WITH ROLLUP" + } + }, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 40, + "last": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "year", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "title", + "expr": "title", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "WITH ROLLUP" + } + }, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 55, + "last": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "year", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "title", + "expr": "title", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "WITH ROLLUP" + } + }, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "year", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 2 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 73, + "last": 103 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectGroupByErr.in b/tests/data/parser/parseSelectGroupByErr.in new file mode 100644 index 000000000..5fe50c9bd --- /dev/null +++ b/tests/data/parser/parseSelectGroupByErr.in @@ -0,0 +1 @@ +SELECT * FROM movie GROUP BY title WITH ROLLUP, year WITH ROLLUP; diff --git a/tests/data/parser/parseSelectGroupByErr.out b/tests/data/parser/parseSelectGroupByErr.out new file mode 100644 index 000000000..61ed67d52 --- /dev/null +++ b/tests/data/parser/parseSelectGroupByErr.out @@ -0,0 +1,357 @@ +{ + "query": "SELECT * FROM movie GROUP BY title WITH ROLLUP, year WITH ROLLUP;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM movie GROUP BY title WITH ROLLUP, year WITH ROLLUP;\n", + "len": 66, + "last": 66, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH ROLLUP", + "value": "WITH ROLLUP", + "keyword": "WITH ROLLUP", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "year", + "value": "year", + "keyword": "YEAR", + "type": { + "@type": "@3" + }, + "flags": 41, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH ROLLUP", + "value": "WITH ROLLUP", + "keyword": "WITH ROLLUP", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "title", + "expr": "title", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "WITH ROLLUP" + } + }, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@19" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@21" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectGroupByWithComments.in b/tests/data/parser/parseSelectGroupByWithComments.in new file mode 100644 index 000000000..a90d18f37 --- /dev/null +++ b/tests/data/parser/parseSelectGroupByWithComments.in @@ -0,0 +1 @@ +SELECT id, title FROM movie GROUP BY movie.id, /* removed_field, */ title; diff --git a/tests/data/parser/parseSelectGroupByWithComments.out b/tests/data/parser/parseSelectGroupByWithComments.out new file mode 100644 index 000000000..0712c7912 --- /dev/null +++ b/tests/data/parser/parseSelectGroupByWithComments.out @@ -0,0 +1,396 @@ +{ + "query": "SELECT id, title FROM movie GROUP BY movie.id, /* removed_field, */ title;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT id, title FROM movie GROUP BY movie.id, /* removed_field, */ title;\n", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "movie", + "value": "movie", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* removed_field, */", + "value": "/* removed_field, */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "title", + "expr": "title", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": null, + "expr": "movie", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "movie", + "column": "id", + "expr": "movie.id", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "title", + "expr": "title", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIndexHint1.out b/tests/data/parser/parseSelectIndexHint1.out index d43e8c105..61b73a519 100644 --- a/tests/data/parser/parseSelectIndexHint1.out +++ b/tests/data/parser/parseSelectIndexHint1.out @@ -1 +1,582 @@ -a:4:{s:5:"query";s:101:"SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:101:"SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0;";s:3:"len";i:101;s:4:"last";i:101;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:40:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"address";s:5:"value";s:7:"address";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"FORCE";s:5:"value";s:5:"FORCE";s:7:"keyword";s:5:"FORCE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:23;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:28;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"INDEX";s:5:"value";s:5:"INDEX";s:7:"keyword";s:5:"INDEX";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:29;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:34;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:35;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"idx_fk_city_id";s:5:"value";s:14:"idx_fk_city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"IGNORE";s:5:"value";s:6:"IGNORE";s:7:"keyword";s:6:"IGNORE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:52;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:59;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"FOR";s:5:"value";s:3:"FOR";s:7:"keyword";s:3:"FOR";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:63;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"GROUP BY";s:5:"value";s:8:"GROUP BY";s:7:"keyword";s:8:"GROUP BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:67;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:77;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:78;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:79;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:80;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:81;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"c";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:82;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:83;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:85;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:90;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"city_id";s:5:"value";s:7:"city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:91;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"<";s:5:"value";s:1:"<";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:98;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:99;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:100;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:40;s:3:"idx";i:40;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"address";s:6:"column";N;s:4:"expr";s:7:"address";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";a:2:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\IndexHint":4:{s:4:"type";s:5:"FORCE";s:10:"indexOrKey";s:5:"INDEX";s:3:"for";N;s:7:"indexes";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:16:"(idx_fk_city_id)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}i:1;O:41:"PhpMyAdmin\SqlParser\Components\IndexHint":4:{s:4:"type";s:6:"IGNORE";s:10:"indexOrKey";s:3:"KEY";s:3:"for";s:8:"GROUP BY";s:7:"indexes";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:8:"(a, b,c)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:7:"city_id";}s:10:"isOperator";b:0;s:4:"expr";s:9:"city_id<0";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:37;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 40, + "idx": 40, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@46" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "FORCE", + "indexOrKey": "INDEX", + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "(a, b,c)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "city_id" + ], + "isOperator": false, + "expr": "city_id<0", + "leftOperand": "city_id", + "operator": "<", + "rightOperand": "0" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 37 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIndexHint2.out b/tests/data/parser/parseSelectIndexHint2.out index 9a5832f2c..301505a74 100644 --- a/tests/data/parser/parseSelectIndexHint2.out +++ b/tests/data/parser/parseSelectIndexHint2.out @@ -1 +1,571 @@ -a:4:{s:5:"query";s:97:"SELECT * FROM address USE INDEX (idx_fk_city_id) FORCE KEY FOR GROUP BY (a, b,c) WHERE city_id<0";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:97:"SELECT * FROM address USE INDEX (idx_fk_city_id) FORCE KEY FOR GROUP BY (a, b,c) WHERE city_id<0";s:3:"len";i:97;s:4:"last";i:97;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:39:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:8;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"address";s:5:"value";s:7:"address";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"USE";s:5:"value";s:3:"USE";s:7:"keyword";s:3:"USE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:23;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"INDEX";s:5:"value";s:5:"INDEX";s:7:"keyword";s:5:"INDEX";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"idx_fk_city_id";s:5:"value";s:14:"idx_fk_city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:48;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"FORCE";s:5:"value";s:5:"FORCE";s:7:"keyword";s:5:"FORCE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:50;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"KEY";s:5:"value";s:3:"KEY";s:7:"keyword";s:3:"KEY";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:56;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"FOR";s:5:"value";s:3:"FOR";s:7:"keyword";s:3:"FOR";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:60;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:63;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"GROUP BY";s:5:"value";s:8:"GROUP BY";s:7:"keyword";s:8:"GROUP BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:64;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:73;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:74;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:75;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:77;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:78;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"c";s:5:"value";s:1:"c";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:79;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:80;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"city_id";s:5:"value";s:7:"city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:88;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"<";s:5:"value";s:1:"<";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:95;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:96;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:39;s:3:"idx";i:39;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"address";s:6:"column";N;s:4:"expr";s:7:"address";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";a:2:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\IndexHint":4:{s:4:"type";s:3:"USE";s:10:"indexOrKey";s:5:"INDEX";s:3:"for";N;s:7:"indexes";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:16:"(idx_fk_city_id)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}i:1;O:41:"PhpMyAdmin\SqlParser\Components\IndexHint":4:{s:4:"type";s:5:"FORCE";s:10:"indexOrKey";s:3:"KEY";s:3:"for";s:8:"GROUP BY";s:7:"indexes";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:8:"(a, b,c)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:7:"city_id";}s:10:"isOperator";b:0;s:4:"expr";s:9:"city_id<0";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:37;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 39, + "idx": 39, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USE", + "value": "USE", + "keyword": "USE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "USE", + "indexOrKey": "INDEX", + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": null, + "expr": "(a, b,c)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "city_id" + ], + "isOperator": false, + "expr": "city_id<0", + "leftOperand": "city_id", + "operator": "<", + "rightOperand": "0" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 37 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIndexHintErr1.out b/tests/data/parser/parseSelectIndexHintErr1.out index 60276d37e..f0dbb22c1 100644 --- a/tests/data/parser/parseSelectIndexHintErr1.out +++ b/tests/data/parser/parseSelectIndexHintErr1.out @@ -1 +1,305 @@ -a:4:{s:5:"query";s:49:"SELECT * FROM address FORCE INT (idx_fk_city_id);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:49:"SELECT * FROM address FORCE INT (idx_fk_city_id);";s:3:"len";i:49;s:4:"last";i:49;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:17:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"address";s:5:"value";s:7:"address";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"FORCE";s:5:"value";s:5:"FORCE";s:7:"keyword";s:5:"FORCE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"idx_fk_city_id";s:5:"value";s:14:"idx_fk_city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:47;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:48;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:17;s:3:"idx";i:17;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"address";s:6:"column";N;s:4:"expr";s:7:"address";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\IndexHint":4:{s:4:"type";s:5:"FORCE";s:10:"indexOrKey";N;s:3:"for";N;s:7:"indexes";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:16:"(idx_fk_city_id)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:14;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:79;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT * FROM address FORCE INT (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM address FORCE INT (idx_fk_city_id);", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "FORCE", + "indexOrKey": "", + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(idx_fk_city_id)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIndexHintErr2.out b/tests/data/parser/parseSelectIndexHintErr2.out index 9d7208923..0bc65e264 100644 --- a/tests/data/parser/parseSelectIndexHintErr2.out +++ b/tests/data/parser/parseSelectIndexHintErr2.out @@ -1 +1,307 @@ -a:4:{s:5:"query";s:49:"SELECT * FROM address FORCE abc (idx_fk_city_id);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:49:"SELECT * FROM address FORCE abc (idx_fk_city_id);";s:3:"len";i:49;s:4:"last";i:49;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:17:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"address";s:5:"value";s:7:"address";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"FORCE";s:5:"value";s:5:"FORCE";s:7:"keyword";s:5:"FORCE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"abc";s:5:"value";s:3:"abc";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"idx_fk_city_id";s:5:"value";s:14:"idx_fk_city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:33;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:47;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:48;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:17;s:3:"idx";i:17;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"address";s:6:"column";N;s:4:"expr";s:7:"address";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:14;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:79;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:93;i:2;i:0;}i:2;a:3:{i:0;s:17:"Unexpected token.";i:1;r:100;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT * FROM address FORCE abc (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM address FORCE abc (idx_fk_city_id);", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": [], + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0 + }, + "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/tests/data/parser/parseSelectIndexHintErr3.out b/tests/data/parser/parseSelectIndexHintErr3.out index aba0e96d8..c6b807ae7 100644 --- a/tests/data/parser/parseSelectIndexHintErr3.out +++ b/tests/data/parser/parseSelectIndexHintErr3.out @@ -1 +1,351 @@ -a:4:{s:5:"query";s:59:"SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:59:"SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id);";s:3:"len";i:59;s:4:"last";i:59;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"address";s:5:"value";s:7:"address";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"FORCE";s:5:"value";s:5:"FORCE";s:7:"keyword";s:5:"FORCE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"INDEX";s:5:"value";s:5:"INDEX";s:7:"keyword";s:5:"INDEX";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"FOR";s:5:"value";s:3:"FOR";s:7:"keyword";s:3:"FOR";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"abc";s:5:"value";s:3:"abc";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:42;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"idx_fk_city_id";s:5:"value";s:14:"idx_fk_city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:43;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:57;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:58;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"address";s:6:"column";N;s:4:"expr";s:7:"address";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:18;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:4:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:107;i:2;i:0;}i:1;a:3:{i:0;s:17:"Unexpected token.";i:1;r:121;i:2;i:0;}i:2;a:3:{i:0;s:17:"Unexpected token.";i:1;r:128;i:2;i:0;}i:3;a:3:{i:0;s:17:"Unexpected token.";i:1;r:135;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id);", + "len": 59, + "last": 59, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": [], + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@20" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@22" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@23" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@24" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIndexHintErr4.out b/tests/data/parser/parseSelectIndexHintErr4.out index c4908e726..4aec3a30a 100644 --- a/tests/data/parser/parseSelectIndexHintErr4.out +++ b/tests/data/parser/parseSelectIndexHintErr4.out @@ -1 +1,349 @@ -a:4:{s:5:"query";s:59:"SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id);";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:59:"SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id);";s:3:"len";i:59;s:4:"last";i:59;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:21:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"address";s:5:"value";s:7:"address";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"FORCE";s:5:"value";s:5:"FORCE";s:7:"keyword";s:5:"FORCE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"INDEX";s:5:"value";s:5:"INDEX";s:7:"keyword";s:5:"INDEX";s:4:"type";i:1;s:5:"flags";i:19;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"FOR";s:5:"value";s:3:"FOR";s:7:"keyword";s:3:"FOR";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"INT";s:5:"value";s:3:"INT";s:7:"keyword";s:3:"INT";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:38;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:42;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"idx_fk_city_id";s:5:"value";s:14:"idx_fk_city_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:43;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:57;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:58;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:21;s:3:"idx";i:21;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":17:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:7:"address";s:6:"column";N;s:4:"expr";s:7:"address";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:11:"index_hints";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\IndexHint":4:{s:4:"type";s:5:"FORCE";s:10:"indexOrKey";s:5:"INDEX";s:3:"for";N;s:7:"indexes";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:16:"(idx_fk_city_id)";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:18;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:19:"Unexpected keyword.";i:1;r:107;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id);", + "len": 59, + "last": 59, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 21, + "idx": 21, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "FORCE", + "indexOrKey": "INDEX", + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(idx_fk_city_id)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@20" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIntoOptions1.out b/tests/data/parser/parseSelectIntoOptions1.out index aba284c29..5a21c6966 100644 --- a/tests/data/parser/parseSelectIntoOptions1.out +++ b/tests/data/parser/parseSelectIntoOptions1.out @@ -1,12 +1,605 @@ -a:4:{s:5:"query";s:152:"SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' - FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' - LINES TERMINATED BY '\n' - FROM test_table;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:152:"SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' - FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' - LINES TERMINATED BY '\n' - FROM test_table;";s:3:"len";i:152;s:4:"last";i:152;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:39:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:12;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"OUTFILE";s:5:"value";s:7:"OUTFILE";s:7:"keyword";s:7:"OUTFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"'/tmp/result.txt'";s:5:"value";s:15:"/tmp/result.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:28;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"FIELDS";s:5:"value";s:6:"FIELDS";s:7:"keyword";s:6:"FIELDS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:50;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:57;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"OPTIONALLY";s:5:"value";s:10:"OPTIONALLY";s:7:"keyword";s:10:"OPTIONALLY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:75;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"ENCLOSED BY";s:5:"value";s:11:"ENCLOSED BY";s:7:"keyword";s:11:"ENCLOSED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:86;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'\"'";s:5:"value";s:1:""";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:98;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:107;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:113;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:126;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'\n'";s:5:"value";s:1:" -";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:127;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:131;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:136;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:140;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"test_table";s:5:"value";s:10:"test_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:141;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:151;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:39;s:3:"idx";i:39;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"b";s:4:"expr";s:1:"b";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:3:"a+b";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"test_table";s:6:"column";N;s:4:"expr";s:10:"test_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";s:7:"OUTFILE";s:4:"dest";s:15:"/tmp/result.txt";s:7:"columns";N;s:6:"values";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:3:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}i:2;s:10:"OPTIONALLY";i:3;a:4:{s:4:"name";s:11:"ENCLOSED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:""";s:4:"expr";s:4:"'\"'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"'\"'";}}}s:14:"fields_keyword";b:1;s:13:"lines_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:" -";s:4:"expr";s:4:"'\n'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"'\n'";}}}}s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:36;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 39, + "idx": 39, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OUTFILE", + "value": "OUTFILE", + "keyword": "OUTFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/result.txt'", + "value": "/tmp/result.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIELDS", + "value": "FIELDS", + "keyword": "FIELDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTIONALLY", + "value": "OPTIONALLY", + "keyword": "OPTIONALLY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\\"'", + "value": "\"", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\n'", + "value": "\n", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test_table", + "value": "test_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a+b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_table", + "column": null, + "expr": "test_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": "OUTFILE", + "dest": "/tmp/result.txt", + "columns": null, + "values": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": "\"", + "expr": "'\\\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\\"'" + } + } + }, + "fieldsKeyword": true, + "linesOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "\n", + "expr": "'\\n'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\n'" + } + } + } + }, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIntoOptions2.out b/tests/data/parser/parseSelectIntoOptions2.out index acea14486..ff5f926d1 100644 --- a/tests/data/parser/parseSelectIntoOptions2.out +++ b/tests/data/parser/parseSelectIntoOptions2.out @@ -1,12 +1,605 @@ -a:4:{s:5:"query";s:153:"SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' - COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' - LINES TERMINATED BY '\n' - FROM test_table;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:153:"SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' - COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' - LINES TERMINATED BY '\n' - FROM test_table;";s:3:"len";i:153;s:4:"last";i:153;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:39:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:12;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"OUTFILE";s:5:"value";s:7:"OUTFILE";s:7:"keyword";s:7:"OUTFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"'/tmp/result.txt'";s:5:"value";s:15:"/tmp/result.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:28;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:50;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:58;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:72;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"OPTIONALLY";s:5:"value";s:10:"OPTIONALLY";s:7:"keyword";s:10:"OPTIONALLY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:76;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"ENCLOSED BY";s:5:"value";s:11:"ENCLOSED BY";s:7:"keyword";s:11:"ENCLOSED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:87;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'\"'";s:5:"value";s:1:""";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:99;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:103;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LINES";s:5:"value";s:5:"LINES";s:7:"keyword";s:5:"LINES";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:113;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:114;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:127;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'\n'";s:5:"value";s:1:" -";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:128;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:132;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:137;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:141;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"test_table";s:5:"value";s:10:"test_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:142;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:152;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:39;s:3:"idx";i:39;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"b";s:4:"expr";s:1:"b";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:3:"a+b";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"test_table";s:6:"column";N;s:4:"expr";s:10:"test_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";s:7:"OUTFILE";s:4:"dest";s:15:"/tmp/result.txt";s:7:"columns";N;s:6:"values";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:3:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}i:2;s:10:"OPTIONALLY";i:3;a:4:{s:4:"name";s:11:"ENCLOSED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:""";s:4:"expr";s:4:"'\"'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"'\"'";}}}s:14:"fields_keyword";b:0;s:13:"lines_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:2;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:" -";s:4:"expr";s:4:"'\n'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"'\n'";}}}}s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:36;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 39, + "idx": 39, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OUTFILE", + "value": "OUTFILE", + "keyword": "OUTFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/result.txt'", + "value": "/tmp/result.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTIONALLY", + "value": "OPTIONALLY", + "keyword": "OPTIONALLY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\\"'", + "value": "\"", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\n'", + "value": "\n", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test_table", + "value": "test_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@45" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a+b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_table", + "column": null, + "expr": "test_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": "OUTFILE", + "dest": "/tmp/result.txt", + "columns": null, + "values": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": "\"", + "expr": "'\\\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\\"'" + } + } + }, + "fieldsKeyword": false, + "linesOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "\n", + "expr": "'\\n'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\n'" + } + } + } + }, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectIntoOptions3.out b/tests/data/parser/parseSelectIntoOptions3.out index 8705654a4..848072df2 100644 --- a/tests/data/parser/parseSelectIntoOptions3.out +++ b/tests/data/parser/parseSelectIntoOptions3.out @@ -1,7 +1,520 @@ -a:4:{s:5:"query";s:124:"SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' - COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' - FROM test_table;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:124:"SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' - COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' - FROM test_table;";s:3:"len";i:124;s:4:"last";i:124;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:33:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"+";s:5:"value";s:1:"+";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:12;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:13;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"INTO";s:5:"value";s:4:"INTO";s:7:"keyword";s:4:"INTO";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:15;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"OUTFILE";s:5:"value";s:7:"OUTFILE";s:7:"keyword";s:7:"OUTFILE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"'/tmp/result.txt'";s:5:"value";s:15:"/tmp/result.txt";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:28;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:45;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLUMNS";s:5:"value";s:7:"COLUMNS";s:7:"keyword";s:7:"COLUMNS";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:50;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:57;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"TERMINATED BY";s:5:"value";s:13:"TERMINATED BY";s:7:"keyword";s:13:"TERMINATED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:58;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"','";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:72;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:75;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"OPTIONALLY";s:5:"value";s:10:"OPTIONALLY";s:7:"keyword";s:10:"OPTIONALLY";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:76;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:86;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"ENCLOSED BY";s:5:"value";s:11:"ENCLOSED BY";s:7:"keyword";s:11:"ENCLOSED BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:87;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:98;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"'\"'";s:5:"value";s:1:""";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:99;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:103;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:108;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:112;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"test_table";s:5:"value";s:10:"test_table";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:113;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:123;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:33;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"b";s:4:"expr";s:1:"b";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:3:"a+b";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"test_table";s:6:"column";N;s:4:"expr";s:10:"test_table";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";O:43:"PhpMyAdmin\SqlParser\Components\IntoKeyword":7:{s:4:"type";s:7:"OUTFILE";s:4:"dest";s:15:"/tmp/result.txt";s:7:"columns";N;s:6:"values";N;s:14:"fields_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:3:{i:1;a:4:{s:4:"name";s:13:"TERMINATED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:",";s:4:"expr";s:3:"','";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:3:"','";}i:2;s:10:"OPTIONALLY";i:3;a:4:{s:4:"name";s:11:"ENCLOSED BY";s:6:"equals";b:0;s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:""";s:4:"expr";s:4:"'\"'";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:5:"value";s:4:"'\"'";}}}s:14:"fields_keyword";b:0;s:13:"lines_options";N;}s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:30;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 33, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OUTFILE", + "value": "OUTFILE", + "keyword": "OUTFILE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'/tmp/result.txt'", + "value": "/tmp/result.txt", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTIONALLY", + "value": "OPTIONALLY", + "keyword": "OPTIONALLY", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\\"'", + "value": "\"", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 1, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test_table", + "value": "test_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a+b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test_table", + "column": null, + "expr": "test_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": "OUTFILE", + "dest": "/tmp/result.txt", + "columns": null, + "values": null, + "fieldsOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "database": null, + "table": null, + "column": "\"", + "expr": "'\\\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\\"'" + } + } + }, + "fieldsKeyword": false, + "linesOptions": null + }, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinCross.out b/tests/data/parser/parseSelectJoinCross.out index 92f8a754e..b6a1bd77f 100644 --- a/tests/data/parser/parseSelectJoinCross.out +++ b/tests/data/parser/parseSelectJoinCross.out @@ -1,10 +1,490 @@ -a:4:{s:5:"query";s:110:"SELECT table112.id,table112.bval1,table112.bval2, -table111.id,table111.aval1 -FROM table112 -CROSS JOIN table111";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:110:"SELECT table112.id,table112.bval1,table112.bval2, -table111.id,table111.aval1 -FROM table112 -CROSS JOIN table111";s:3:"len";i:110;s:4:"last";i:110;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:31:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table112";s:5:"value";s:8:"table112";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table112";s:5:"value";s:8:"table112";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:27;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"bval1";s:5:"value";s:5:"bval1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table112";s:5:"value";s:8:"table112";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:42;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"bval2";s:5:"value";s:5:"bval2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:43;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:48;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table111";s:5:"value";s:8:"table111";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:58;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:59;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:61;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table111";s:5:"value";s:8:"table111";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:62;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:70;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"aval1";s:5:"value";s:5:"aval1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:71;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:77;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table112";s:5:"value";s:8:"table112";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:82;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:90;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"CROSS JOIN";s:5:"value";s:10:"CROSS JOIN";s:7:"keyword";s:10:"CROSS JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:91;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:101;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table111";s:5:"value";s:8:"table111";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:102;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:31;s:3:"idx";i:31;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:5:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table112";s:6:"column";s:2:"id";s:4:"expr";s:11:"table112.id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table112";s:6:"column";s:5:"bval1";s:4:"expr";s:14:"table112.bval1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table112";s:6:"column";s:5:"bval2";s:4:"expr";s:14:"table112.bval2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:3;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table111";s:6:"column";s:2:"id";s:4:"expr";s:11:"table111.id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:4;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table111";s:6:"column";s:5:"aval1";s:4:"expr";s:14:"table111.aval1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table112";s:6:"column";N;s:4:"expr";s:8:"table112";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:5:"CROSS";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table111";s:6:"column";N;s:4:"expr";s:8:"table111";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:29;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT table112.id,table112.bval1,table112.bval2,\ntable111.id,table111.aval1\nFROM table112\nCROSS JOIN table111", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 31, + "idx": 31, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bval1", + "value": "bval1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bval2", + "value": "bval2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aval1", + "value": "aval1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table112", + "column": "id", + "expr": "table112.id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table112", + "column": "bval1", + "expr": "table112.bval1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table112", + "column": "bval2", + "expr": "table112.bval2", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table111", + "column": "id", + "expr": "table111.id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table111", + "column": "aval1", + "expr": "table111.aval1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table112", + "column": null, + "expr": "table112", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "CROSS", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table111", + "column": null, + "expr": "table111", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinMultiple.out b/tests/data/parser/parseSelectJoinMultiple.out index 6f1342f5b..457e6e078 100644 --- a/tests/data/parser/parseSelectJoinMultiple.out +++ b/tests/data/parser/parseSelectJoinMultiple.out @@ -1,4 +1,394 @@ -a:4:{s:5:"query";s:92:"SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items -WHERE customer= 'username'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:92:"SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items -WHERE customer= 'username'";s:3:"len";i:92;s:4:"last";i:92;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"Orders";s:5:"value";s:6:"Orders";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"NATURAL JOIN";s:5:"value";s:12:"NATURAL JOIN";s:7:"keyword";s:12:"NATURAL JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"Items_Orders";s:5:"value";s:12:"Items_Orders";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"NATURAL JOIN";s:5:"value";s:12:"NATURAL JOIN";s:7:"keyword";s:12:"NATURAL JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:47;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"Items";s:5:"value";s:5:"Items";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:60;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:66;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:71;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"customer";s:5:"value";s:8:"customer";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:72;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:80;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"'username'";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:82;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:23;s:3:"idx";i:23;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"Orders";s:6:"column";N;s:4:"expr";s:6:"Orders";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:8:"customer";i:1;s:8:"username";}s:10:"isOperator";b:0;s:4:"expr";s:20:"customer= 'username'";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:2:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:7:"NATURAL";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:12:"Items_Orders";s:6:"column";N;s:4:"expr";s:12:"Items_Orders";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}i:1;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:7:"NATURAL";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"Items";s:6:"column";N;s:4:"expr";s:5:"Items";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:21;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items\nWHERE customer= 'username'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items\nWHERE customer= 'username'", + "len": 92, + "last": 92, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Orders", + "value": "Orders", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Items_Orders", + "value": "Items_Orders", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Items", + "value": "Items", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customer", + "value": "customer", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'username'", + "value": "username", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Orders", + "column": null, + "expr": "Orders", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "customer", + "username" + ], + "isOperator": false, + "expr": "customer= 'username'", + "leftOperand": "customer", + "operator": "=", + "rightOperand": "'username'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Items_Orders", + "column": null, + "expr": "Items_Orders", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Items", + "column": null, + "expr": "Items", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinMultiple2.out b/tests/data/parser/parseSelectJoinMultiple2.out index 2f3846878..9d1b229b3 100644 --- a/tests/data/parser/parseSelectJoinMultiple2.out +++ b/tests/data/parser/parseSelectJoinMultiple2.out @@ -1,7 +1,541 @@ -a:4:{s:5:"query";s:118:"SELECT * FROM orders -NATURAL JOIN Items_Orders LEFT JOIN items on orders.item_id = items.id -WHERE customer= 'username'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:118:"SELECT * FROM orders -NATURAL JOIN Items_Orders LEFT JOIN items on orders.item_id = items.id -WHERE customer= 'username'";s:3:"len";i:118;s:4:"last";i:118;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:35:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"orders";s:5:"value";s:6:"orders";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"NATURAL JOIN";s:5:"value";s:12:"NATURAL JOIN";s:7:"keyword";s:12:"NATURAL JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:21;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"Items_Orders";s:5:"value";s:12:"Items_Orders";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"LEFT JOIN";s:5:"value";s:9:"LEFT JOIN";s:7:"keyword";s:9:"LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:47;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"items";s:5:"value";s:5:"items";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:57;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"on";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:63;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:65;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"orders";s:5:"value";s:6:"orders";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:66;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:72;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"item_id";s:5:"value";s:7:"item_id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:73;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:81;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"items";s:5:"value";s:5:"items";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:83;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:88;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:89;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:92;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:97;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"customer";s:5:"value";s:8:"customer";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:98;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:106;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:107;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"'username'";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:108;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:35;s:3:"idx";i:35;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"orders";s:6:"column";N;s:4:"expr";s:6:"orders";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:8:"customer";i:1;s:8:"username";}s:10:"isOperator";b:0;s:4:"expr";s:20:"customer= 'username'";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:2:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:7:"NATURAL";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:12:"Items_Orders";s:6:"column";N;s:4:"expr";s:12:"Items_Orders";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}i:1;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:4:"LEFT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"items";s:6:"column";N;s:4:"expr";s:5:"items";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:4:{i:0;s:6:"orders";i:1;s:7:"item_id";i:2;s:5:"items";i:3;s:2:"id";}s:10:"isOperator";b:0;s:4:"expr";s:25:"orders.item_id = items.id";}}s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:33;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 35, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orders", + "value": "orders", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Items_Orders", + "value": "Items_Orders", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "items", + "value": "items", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orders", + "value": "orders", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "item_id", + "value": "item_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "items", + "value": "items", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customer", + "value": "customer", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'username'", + "value": "username", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "orders", + "column": null, + "expr": "orders", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "customer", + "username" + ], + "isOperator": false, + "expr": "customer= 'username'", + "leftOperand": "customer", + "operator": "=", + "rightOperand": "'username'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Items_Orders", + "column": null, + "expr": "Items_Orders", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "items", + "column": null, + "expr": "items", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "orders", + "item_id", + "items", + "id" + ], + "isOperator": false, + "expr": "orders.item_id = items.id", + "leftOperand": "orders.item_id", + "operator": "=", + "rightOperand": "items.id" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinNatural.out b/tests/data/parser/parseSelectJoinNatural.out index 156e2517a..40ac79ce3 100644 --- a/tests/data/parser/parseSelectJoinNatural.out +++ b/tests/data/parser/parseSelectJoinNatural.out @@ -1,7 +1,305 @@ -a:4:{s:5:"query";s:57:"SELECT id,aval1,cval1 -FROM table111 -NATURAL JOIN table113";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:57:"SELECT id,aval1,cval1 -FROM table111 -NATURAL JOIN table113";s:3:"len";i:57;s:4:"last";i:57;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:16:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"aval1";s:5:"value";s:5:"aval1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"cval1";s:5:"value";s:5:"cval1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:16;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table111";s:5:"value";s:8:"table111";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"NATURAL JOIN";s:5:"value";s:12:"NATURAL JOIN";s:7:"keyword";s:12:"NATURAL JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:36;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table113";s:5:"value";s:8:"table113";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:49;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:16;s:3:"idx";i:16;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"aval1";s:4:"expr";s:5:"aval1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"cval1";s:4:"expr";s:5:"cval1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table111";s:6:"column";N;s:4:"expr";s:8:"table111";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:7:"NATURAL";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table113";s:6:"column";N;s:4:"expr";s:8:"table113";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:14;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT id,aval1,cval1\nFROM table111\nNATURAL JOIN table113", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT id,aval1,cval1\nFROM table111\nNATURAL JOIN table113", + "len": 57, + "last": 57, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aval1", + "value": "aval1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cval1", + "value": "cval1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table113", + "value": "table113", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "aval1", + "expr": "aval1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "cval1", + "expr": "cval1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table111", + "column": null, + "expr": "table111", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table113", + "column": null, + "expr": "table113", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinNaturalLeft.out b/tests/data/parser/parseSelectJoinNaturalLeft.out index 6583105e5..bcb7dc066 100644 --- a/tests/data/parser/parseSelectJoinNaturalLeft.out +++ b/tests/data/parser/parseSelectJoinNaturalLeft.out @@ -1,7 +1,492 @@ -a:4:{s:5:"query";s:88:"SELECT C.First_Name, C.Last_Name, O.title -FROM Employee as C -NATURAL LEFT JOIN JOb as O;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:88:"SELECT C.First_Name, C.Last_Name, O.title -FROM Employee as C -NATURAL LEFT JOIN JOb as O;";s:3:"len";i:88;s:4:"last";i:88;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:33:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"C";s:5:"value";s:1:"C";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"First_Name";s:5:"value";s:10:"First_Name";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:19;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"C";s:5:"value";s:1:"C";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"Last_Name";s:5:"value";s:9:"Last_Name";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"O";s:5:"value";s:1:"O";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:35;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"title";s:5:"value";s:5:"title";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:36;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"Employee";s:5:"value";s:8:"Employee";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:56;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"C";s:5:"value";s:1:"C";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:59;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:60;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"NATURAL LEFT JOIN";s:5:"value";s:17:"NATURAL LEFT JOIN";s:7:"keyword";s:17:"NATURAL LEFT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:61;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:78;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"JOb";s:5:"value";s:3:"JOb";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:79;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:83;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"O";s:5:"value";s:1:"O";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:87;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:33;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"C";s:6:"column";s:10:"First_Name";s:4:"expr";s:12:"C.First_Name";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"C";s:6:"column";s:9:"Last_Name";s:4:"expr";s:11:"C.Last_Name";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"O";s:6:"column";s:5:"title";s:4:"expr";s:7:"O.title";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"Employee";s:6:"column";N;s:4:"expr";s:8:"Employee";s:5:"alias";s:1:"C";s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:12:"NATURAL LEFT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"JOb";s:6:"column";N;s:4:"expr";s:3:"JOb";s:5:"alias";s:1:"O";s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:30;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 33, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C", + "value": "C", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "First_Name", + "value": "First_Name", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C", + "value": "C", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Last_Name", + "value": "Last_Name", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "O", + "value": "O", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Employee", + "value": "Employee", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C", + "value": "C", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL LEFT JOIN", + "value": "NATURAL LEFT JOIN", + "keyword": "NATURAL LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "JOb", + "value": "JOb", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "O", + "value": "O", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@38" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "C", + "column": "First_Name", + "expr": "C.First_Name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "C", + "column": "Last_Name", + "expr": "C.Last_Name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "O", + "column": "title", + "expr": "O.title", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Employee", + "column": null, + "expr": "Employee", + "alias": "C", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "JOb", + "column": null, + "expr": "JOb", + "alias": "O", + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinNaturalLeftOuter.out b/tests/data/parser/parseSelectJoinNaturalLeftOuter.out index 988b81757..a36cbeeb3 100644 --- a/tests/data/parser/parseSelectJoinNaturalLeftOuter.out +++ b/tests/data/parser/parseSelectJoinNaturalLeftOuter.out @@ -1 +1,252 @@ -a:4:{s:5:"query";s:55:"SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:55:"SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor;";s:3:"len";i:55;s:4:"last";i:55;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"actor";s:5:"value";s:5:"actor";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:23:"NATURAL LEFT OUTER JOIN";s:5:"value";s:23:"NATURAL LEFT OUTER JOIN";s:7:"keyword";s:23:"NATURAL LEFT OUTER JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"film_actor";s:5:"value";s:10:"film_actor";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:44;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:54;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:13;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"actor";s:6:"column";N;s:4:"expr";s:5:"actor";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:18:"NATURAL LEFT OUTER";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"film_actor";s:6:"column";N;s:4:"expr";s:10:"film_actor";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor;", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL LEFT OUTER JOIN", + "value": "NATURAL LEFT OUTER JOIN", + "keyword": "NATURAL LEFT OUTER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_actor", + "value": "film_actor", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL LEFT OUTER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film_actor", + "column": null, + "expr": "film_actor", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinNaturalRight.out b/tests/data/parser/parseSelectJoinNaturalRight.out index 1182a352c..45f8834e5 100644 --- a/tests/data/parser/parseSelectJoinNaturalRight.out +++ b/tests/data/parser/parseSelectJoinNaturalRight.out @@ -1,4 +1,263 @@ -a:4:{s:5:"query";s:51:"SELECT * FROM actor NATURAL RIGHT JOIN film_actor; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:51:"SELECT * FROM actor NATURAL RIGHT JOIN film_actor; -";s:3:"len";i:51;s:4:"last";i:51;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:14:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"actor";s:5:"value";s:5:"actor";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:18:"NATURAL RIGHT JOIN";s:5:"value";s:18:"NATURAL RIGHT JOIN";s:7:"keyword";s:18:"NATURAL RIGHT JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"film_actor";s:5:"value";s:10:"film_actor";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:49;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:14;s:3:"idx";i:14;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"actor";s:6:"column";N;s:4:"expr";s:5:"actor";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:13:"NATURAL RIGHT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"film_actor";s:6:"column";N;s:4:"expr";s:10:"film_actor";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT * FROM actor NATURAL RIGHT JOIN film_actor;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM actor NATURAL RIGHT JOIN film_actor;\n", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL RIGHT JOIN", + "value": "NATURAL RIGHT JOIN", + "keyword": "NATURAL RIGHT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_actor", + "value": "film_actor", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL RIGHT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film_actor", + "column": null, + "expr": "film_actor", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinNaturalRightOuter.out b/tests/data/parser/parseSelectJoinNaturalRightOuter.out index 5e34eb037..4cf37a5b3 100644 --- a/tests/data/parser/parseSelectJoinNaturalRightOuter.out +++ b/tests/data/parser/parseSelectJoinNaturalRightOuter.out @@ -1 +1,252 @@ -a:4:{s:5:"query";s:56:"SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:56:"SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor;";s:3:"len";i:56;s:4:"last";i:56;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:13:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"actor";s:5:"value";s:5:"actor";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:24:"NATURAL RIGHT OUTER JOIN";s:5:"value";s:24:"NATURAL RIGHT OUTER JOIN";s:7:"keyword";s:24:"NATURAL RIGHT OUTER JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"film_actor";s:5:"value";s:10:"film_actor";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:55;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:13;s:3:"idx";i:13;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"actor";s:6:"column";N;s:4:"expr";s:5:"actor";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:19:"NATURAL RIGHT OUTER";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:10:"film_actor";s:6:"column";N;s:4:"expr";s:10:"film_actor";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor;", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL RIGHT OUTER JOIN", + "value": "NATURAL RIGHT OUTER JOIN", + "keyword": "NATURAL RIGHT OUTER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_actor", + "value": "film_actor", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "NATURAL RIGHT OUTER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film_actor", + "column": null, + "expr": "film_actor", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectJoinStraight.out b/tests/data/parser/parseSelectJoinStraight.out index dd27ab743..f4360a9dc 100644 --- a/tests/data/parser/parseSelectJoinStraight.out +++ b/tests/data/parser/parseSelectJoinStraight.out @@ -1,7 +1,452 @@ -a:4:{s:5:"query";s:85:"SELECT id,aval1,cval1 -FROM table111 -STRAIGHT_JOIN table113 on table111.a = table113.b";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:85:"SELECT id,aval1,cval1 -FROM table111 -STRAIGHT_JOIN table113 on table111.a = table113.b";s:3:"len";i:85;s:4:"last";i:85;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:28:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"aval1";s:5:"value";s:5:"aval1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"cval1";s:5:"value";s:5:"cval1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:16;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table111";s:5:"value";s:8:"table111";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:27;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"STRAIGHT_JOIN";s:5:"value";s:13:"STRAIGHT_JOIN";s:7:"keyword";s:13:"STRAIGHT_JOIN";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:36;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:49;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table113";s:5:"value";s:8:"table113";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:50;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:58;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"on";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:59;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table111";s:5:"value";s:8:"table111";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:62;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:70;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:71;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:73;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"table113";s:5:"value";s:8:"table113";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:83;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"b";s:5:"value";s:1:"b";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:84;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:28;s:3:"idx";i:28;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:3:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:2:"id";s:4:"expr";s:2:"id";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"aval1";s:4:"expr";s:5:"aval1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:2;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"cval1";s:4:"expr";s:5:"cval1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table111";s:6:"column";N;s:4:"expr";s:8:"table111";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:8:"STRAIGHT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:8:"table113";s:6:"column";N;s:4:"expr";s:8:"table113";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:4:{i:0;s:8:"table111";i:1;s:1:"a";i:2;s:8:"table113";i:3;s:1:"b";}s:10:"isOperator";b:0;s:4:"expr";s:23:"table111.a = table113.b";}}s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:26;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT id,aval1,cval1\nFROM table111\nSTRAIGHT_JOIN table113 on table111.a = table113.b", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT id,aval1,cval1\nFROM table111\nSTRAIGHT_JOIN table113 on table111.a = table113.b", + "len": 85, + "last": 85, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 28, + "idx": 28, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aval1", + "value": "aval1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cval1", + "value": "cval1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STRAIGHT_JOIN", + "value": "STRAIGHT_JOIN", + "keyword": "STRAIGHT_JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table113", + "value": "table113", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table113", + "value": "table113", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "aval1", + "expr": "aval1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "cval1", + "expr": "cval1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table111", + "column": null, + "expr": "table111", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "STRAIGHT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table113", + "column": null, + "expr": "table113", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "table111", + "a", + "table113", + "b" + ], + "isOperator": false, + "expr": "table111.a = table113.b", + "leftOperand": "table111.a", + "operator": "=", + "rightOperand": "table113.b" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectNested.out b/tests/data/parser/parseSelectNested.out index de4f38b4e..62110edc3 100644 --- a/tests/data/parser/parseSelectNested.out +++ b/tests/data/parser/parseSelectNested.out @@ -1 +1,356 @@ -a:4:{s:5:"query";s:52:"SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:52:"SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo;";s:3:"len";i:52;s:4:"last";i:52;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:24:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'foo'";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:15;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:20;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:21;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"Bar";s:5:"value";s:3:"Bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:28;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:29;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:30;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:31;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:37;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"'baz'";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:38;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:43;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:44;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"as";s:5:"value";s:2:"AS";s:7:"keyword";s:2:"AS";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:45;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"fOo";s:5:"value";s:3:"fOo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:48;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:51;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:24;s:3:"idx";i:24;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:14:"(SELECT 'foo')";s:5:"alias";s:3:"Bar";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:14:"(SELECT 'baz')";s:5:"alias";s:3:"fOo";s:8:"function";N;s:8:"subquery";s:6:"SELECT";}}s:4:"from";a:0:{}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:21;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo;", + "len": 52, + "last": 52, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Bar", + "value": "Bar", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'baz'", + "value": "baz", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "fOo", + "value": "fOo", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@30" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'foo')", + "alias": "Bar", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'baz')", + "alias": "fOo", + "function": null, + "subquery": "SELECT" + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectOrderByComment.in b/tests/data/parser/parseSelectOrderByComment.in new file mode 100644 index 000000000..84df8c3f8 --- /dev/null +++ b/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/tests/data/parser/parseSelectOrderByComment.out b/tests/data/parser/parseSelectOrderByComment.out new file mode 100644 index 000000000..f4096199e --- /dev/null +++ b/tests/data/parser/parseSelectOrderByComment.out @@ -0,0 +1,330 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 20, + "idx": 20, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- this is the SELECT", + "value": "-- this is the SELECT", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Une table espace`", + "value": "Une table espace", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- this is the FROM", + "value": "-- this is the FROM", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 4, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- this is the order by", + "value": "-- this is the order by", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 4, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "one space", + "expr": "`one space`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Une table espace", + "column": null, + "expr": "`Une table espace`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "one space", + "expr": "`one space`", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectOrderByIsNull.in b/tests/data/parser/parseSelectOrderByIsNull.in new file mode 100644 index 000000000..79f4a674f --- /dev/null +++ b/tests/data/parser/parseSelectOrderByIsNull.in @@ -0,0 +1 @@ +SELECT * FROM some_table ORDER BY some_col IS NULL; \ No newline at end of file diff --git a/tests/data/parser/parseSelectOrderByIsNull.out b/tests/data/parser/parseSelectOrderByIsNull.out new file mode 100644 index 000000000..a1caf1ef5 --- /dev/null +++ b/tests/data/parser/parseSelectOrderByIsNull.out @@ -0,0 +1,297 @@ +{ + "query": "SELECT * FROM some_table ORDER BY some_col IS NULL;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT * FROM some_table ORDER BY some_col IS NULL;", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "some_table", + "value": "some_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "some_col", + "value": "some_col", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "some_table", + "column": null, + "expr": "some_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "some_col", + "expr": "some_col IS NULL", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectOverAlias_mariadb_100600.in b/tests/data/parser/parseSelectOverAlias_mariadb_100600.in new file mode 100644 index 000000000..9950d1396 --- /dev/null +++ b/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/tests/data/parser/parseSelectOverAlias_mariadb_100600.out b/tests/data/parser/parseSelectOverAlias_mariadb_100600.out new file mode 100644 index 000000000..4a2f3921c --- /dev/null +++ b/tests/data/parser/parseSelectOverAlias_mariadb_100600.out @@ -0,0 +1,672 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 51, + "idx": 51, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pid`", + "value": "pid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pid`", + "value": "pid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pname`", + "value": "pname", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rank", + "value": "rank", + "keyword": "RANK", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "over", + "value": "OVER", + "keyword": "OVER", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "partition by", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pvalue`", + "value": "pvalue", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "order by", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pid`", + "value": "pid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "desc", + "value": "DESC", + "keyword": "DESC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`myrank`", + "value": "myrank", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "products", + "column": "pid", + "expr": "`products`.`pid`", + "alias": "pid", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "products", + "column": "pname", + "expr": "`products`.`pname`", + "alias": "name", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "rank() over( partition by `products`.`pvalue` order by `products`.`pid` desc)", + "alias": "myrank", + "function": "rank", + "subquery": "DESC" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "products", + "column": null, + "expr": "`products`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectUnion.out b/tests/data/parser/parseSelectUnion.out index b54b8b8c4..806d96a39 100644 --- a/tests/data/parser/parseSelectUnion.out +++ b/tests/data/parser/parseSelectUnion.out @@ -1,4 +1,552 @@ -a:4:{s:5:"query";s:62:"(SELECT a FROM t WHERE a=1) UNION (SELECT a FROM t WHERE a=2) -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:62:"(SELECT a FROM t WHERE a=1) UNION (SELECT a FROM t WHERE a=2) -";s:3:"len";i:62;s:4:"last";i:62;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:35:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:1;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:10;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"t";s:5:"value";s:1:"t";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:15;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:24;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:25;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:26;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"UNION";s:5:"value";s:5:"UNION";s:7:"keyword";s:5:"UNION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:28;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:34;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:35;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:42;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:44;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:48;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"t";s:5:"value";s:1:"t";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:49;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:51;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"a";s:5:"value";s:1:"a";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:57;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:58;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:59;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:60;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:61;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:35;s:3:"idx";i:35;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"t";s:6:"column";N;s:4:"expr";s:1:"t";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:1:"a";}s:10:"isOperator";b:0;s:4:"expr";s:3:"a=1";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:1:{i:0;a:2:{i:0;s:5:"UNION";i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:1:"a";s:4:"expr";s:1:"a";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:1:"t";s:6:"column";N;s:4:"expr";s:1:"t";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:1:"a";}s:10:"isOperator";b:0;s:4:"expr";s:3:"a=2";}}s:5:"group";N;s:6:"having";N;s:5:"order";a:0:{}s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:16;s:4:"last";i:33;}}}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:33;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "(SELECT a FROM t WHERE a=1) UNION (SELECT a FROM t WHERE a=2)\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 35, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t", + "column": null, + "expr": "t", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a=1", + "leftOperand": "a", + "operator": "=", + "rightOperand": "1" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t", + "column": null, + "expr": "t", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a=2", + "leftOperand": "a", + "operator": "=", + "rightOperand": "2" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 16, + "last": 33 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectUnion2.out b/tests/data/parser/parseSelectUnion2.out index 8d39c0a74..38b4271b0 100644 --- a/tests/data/parser/parseSelectUnion2.out +++ b/tests/data/parser/parseSelectUnion2.out @@ -1 +1,1582 @@ -a:4:{s:5:"query";s:344:"(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";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:344:"(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";s:3:"len";i:344;s:4:"last";i:344;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:109:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:1;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DISTINCT";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:8;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`User`";s:5:"value";s:4:"User";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:23;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`Host`";s:5:"value";s:4:"Host";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`mysql`";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:37;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:44;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`user`";s:5:"value";s:4:"user";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:45;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:52;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"UNION";s:5:"value";s:5:"UNION";s:7:"keyword";s:5:"UNION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:60;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:61;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DISTINCT";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:68;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:76;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`User`";s:5:"value";s:4:"User";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:77;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:83;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`Host`";s:5:"value";s:4:"Host";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:85;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:91;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:92;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`mysql`";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:97;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:104;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"`db`";s:5:"value";s:2:"db";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:105;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:109;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:110;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:111;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"UNION";s:5:"value";s:5:"UNION";s:7:"keyword";s:5:"UNION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:112;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:117;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:118;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:119;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:125;}i:43;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DISTINCT";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:126;}i:44;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:134;}i:45;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`User`";s:5:"value";s:4:"User";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:135;}i:46;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:141;}i:47;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:142;}i:48;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`Host`";s:5:"value";s:4:"Host";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:143;}i:49;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:149;}i:50;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:150;}i:51;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:154;}i:52;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`mysql`";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:155;}i:53;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:162;}i:54;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"`tables_priv`";s:5:"value";s:11:"tables_priv";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:163;}i:55;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:176;}i:56;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:177;}i:57;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:178;}i:58;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"UNION";s:5:"value";s:5:"UNION";s:7:"keyword";s:5:"UNION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:179;}i:59;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:184;}i:60;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:185;}i:61;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:186;}i:62;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:192;}i:63;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DISTINCT";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:193;}i:64;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:201;}i:65;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`User`";s:5:"value";s:4:"User";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:202;}i:66;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:208;}i:67;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:209;}i:68;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`Host`";s:5:"value";s:4:"Host";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:210;}i:69;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:216;}i:70;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:217;}i:71;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:221;}i:72;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`mysql`";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:222;}i:73;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:229;}i:74;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:14:"`columns_priv`";s:5:"value";s:12:"columns_priv";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:230;}i:75;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:244;}i:76;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:245;}i:77;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:246;}i:78;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"UNION";s:5:"value";s:5:"UNION";s:7:"keyword";s:5:"UNION";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:247;}i:79;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:252;}i:80;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:253;}i:81;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:254;}i:82;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:260;}i:83;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DISTINCT";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:261;}i:84;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:269;}i:85;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`User`";s:5:"value";s:4:"User";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:270;}i:86;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:276;}i:87;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:277;}i:88;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`Host`";s:5:"value";s:4:"Host";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:278;}i:89;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:284;}i:90;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:285;}i:91;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:289;}i:92;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"`mysql`";s:5:"value";s:5:"mysql";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:290;}i:93;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:".";s:5:"value";s:1:".";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:297;}i:94;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:12:"`procs_priv`";s:5:"value";s:10:"procs_priv";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:298;}i:95;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:310;}i:96;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:311;}i:97;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:312;}i:98;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ORDER BY";s:5:"value";s:8:"ORDER BY";s:7:"keyword";s:8:"ORDER BY";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:313;}i:99;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:321;}i:100;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`User`";s:5:"value";s:4:"User";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:322;}i:101;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:328;}i:102;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:329;}i:103;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:332;}i:104;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:333;}i:105;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"`Host`";s:5:"value";s:4:"Host";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:334;}i:106;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:340;}i:107;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"ASC";s:5:"value";s:3:"ASC";s:7:"keyword";s:3:"ASC";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:341;}i:108;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:109;s:3:"idx";i:109;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"User";s:4:"expr";s:6:"`User`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Host";s:4:"expr";s:6:"`Host`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:5:"mysql";s:5:"table";s:4:"user";s:6:"column";N;s:4:"expr";s:14:"`mysql`.`user`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"User";s:4:"expr";s:6:"`User`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\OrderKeyword":2:{s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Host";s:4:"expr";s:6:"`Host`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:4:"type";s:3:"ASC";}}s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:4:{i:0;a:2:{i:0;s:5:"UNION";i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"User";s:4:"expr";s:6:"`User`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Host";s:4:"expr";s:6:"`Host`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:5:"mysql";s:5:"table";s:2:"db";s:6:"column";N;s:4:"expr";s:12:"`mysql`.`db`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";a:0:{}s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"DISTINCT";}}s:5:"first";i:18;s:4:"last";i:37;}}i:1;a:2:{i:0;s:5:"UNION";i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"User";s:4:"expr";s:6:"`User`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Host";s:4:"expr";s:6:"`Host`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:5:"mysql";s:5:"table";s:11:"tables_priv";s:6:"column";N;s:4:"expr";s:21:"`mysql`.`tables_priv`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";a:0:{}s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"DISTINCT";}}s:5:"first";i:38;s:4:"last";i:57;}}i:2;a:2:{i:0;s:5:"UNION";i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"User";s:4:"expr";s:6:"`User`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Host";s:4:"expr";s:6:"`Host`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:5:"mysql";s:5:"table";s:12:"columns_priv";s:6:"column";N;s:4:"expr";s:22:"`mysql`.`columns_priv`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";a:0:{}s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"DISTINCT";}}s:5:"first";i:58;s:4:"last";i:77;}}i:3;a:2:{i:0;s:5:"UNION";i:1;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"User";s:4:"expr";s:6:"`User`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:4:"Host";s:4:"expr";s:6:"`Host`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";s:5:"mysql";s:5:"table";s:10:"procs_priv";s:6:"column";N;s:4:"expr";s:20:"`mysql`.`procs_priv`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";a:0:{}s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"DISTINCT";}}s:5:"first";i:78;s:4:"last";i:107;}}}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"DISTINCT";}}s:5:"first";i:0;s:4:"last";i:107;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 109, + "idx": 109, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user`", + "value": "user", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`db`", + "value": "db", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tables_priv`", + "value": "tables_priv", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`columns_priv`", + "value": "columns_priv", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 246 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`procs_priv`", + "value": "procs_priv", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@5" + }, + "flags": 7, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "mysql", + "table": "user", + "column": null, + "expr": "`mysql`.`user`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderSortKeyword", + "name": "Asc", + "value": "ASC" + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + }, + "type": { + "@type": "@123" + } + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "mysql", + "table": "db", + "column": null, + "expr": "`mysql`.`db`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 18, + "last": 37 + } + ], + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "mysql", + "table": "tables_priv", + "column": null, + "expr": "`mysql`.`tables_priv`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 38, + "last": 57 + } + ], + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "mysql", + "table": "columns_priv", + "column": null, + "expr": "`mysql`.`columns_priv`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 58, + "last": 77 + } + ], + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": "mysql", + "table": "procs_priv", + "column": null, + "expr": "`mysql`.`procs_priv`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 78, + "last": 107 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 0, + "last": 107 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectWhere.in b/tests/data/parser/parseSelectWhere.in new file mode 100644 index 000000000..6838048da --- /dev/null +++ b/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/tests/data/parser/parseSelectWhere.out b/tests/data/parser/parseSelectWhere.out new file mode 100644 index 000000000..804eed44f --- /dev/null +++ b/tests/data/parser/parseSelectWhere.out @@ -0,0 +1,4728 @@ +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 336, + "idx": 336, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OR", + "value": "OR", + "keyword": "OR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">=", + "value": ">=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "||", + "value": "||", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "!=", + "value": "!=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@73" + }, + "flags": 2, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<=", + "value": "<=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film`", + "value": "film", + "keyword": null, + "type": { + "@type": "@73" + }, + "flags": 2, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@73" + }, + "flags": 2, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<>", + "value": "<>", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "&&", + "value": "&&", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film`", + "value": "film", + "keyword": null, + "type": { + "@type": "@73" + }, + "flags": 2, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@73" + }, + "flags": 2, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<=", + "value": "<=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "XOR", + "value": "XOR", + "keyword": "XOR", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rating", + "value": "rating", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'PG-13'", + "value": "PG-13", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/* film_id = */", + "value": "/* film_id = */", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 2, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "!", + "value": "!", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 471 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "description", + "value": "description", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 503 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "description", + "value": "description", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BETWEEN", + "value": "BETWEEN", + "keyword": "BETWEEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 620 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 629 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BETWEEN", + "value": "BETWEEN", + "keyword": "BETWEEN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 665 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 675 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 676 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 700 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "7", + "value": 7, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 712 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 736 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rating", + "value": "rating", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPPER", + "value": "UPPER", + "keyword": "UPPER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'pg'", + "value": "pg", + "keyword": null, + "type": { + "@type": "@144" + }, + "flags": 1, + "position": 752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 759 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 16, + "position": 766 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 773 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rating", + "value": "rating", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SOUNDS", + "value": "SOUNDS", + "keyword": "SOUNDS", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'PG'", + "value": "PG", + "keyword": null, + "type": { + "@type": "@144" + }, + "flags": 1, + "position": 803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id = 10", + "leftOperand": "film_id", + "operator": "=", + "rightOperand": "10" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "OR", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id >= 20", + "leftOperand": "film_id", + "operator": ">=", + "rightOperand": "20" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "(film_id < 10)", + "leftOperand": "(film_id", + "operator": "<", + "rightOperand": "10)" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "||", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "(film_id > 20)", + "leftOperand": "(film_id", + "operator": ">", + "rightOperand": "20)" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 23, + "last": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "`film_id` != 10", + "leftOperand": "`film_id`", + "operator": "!=", + "rightOperand": "10" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "`film_id` <= 20", + "leftOperand": "`film_id`", + "operator": "<=", + "rightOperand": "20" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 52, + "last": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film", + "film_id" + ], + "isOperator": false, + "expr": "`film`.`film_id` <> 10", + "leftOperand": "`film`.`film_id`", + "operator": "<>", + "rightOperand": "10" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "&&", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film", + "film_id" + ], + "isOperator": false, + "expr": "`film`.`film_id` <= 20", + "leftOperand": "`film`.`film_id`", + "operator": "<=", + "rightOperand": "20" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 77, + "last": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film", + "film_id" + ], + "isOperator": false, + "expr": "film.film_id < 20", + "leftOperand": "film.film_id", + "operator": "<", + "rightOperand": "20" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "XOR", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film", + "rating", + "PG-13" + ], + "isOperator": false, + "expr": "film.rating = 'PG-13'", + "leftOperand": "film.rating", + "operator": "=", + "rightOperand": "'PG-13'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 106, + "last": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id = 10", + "leftOperand": "film_id", + "operator": "=", + "rightOperand": "10" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 135, + "last": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "NOT film_id > 10", + "leftOperand": "NOT film_id", + "operator": ">", + "rightOperand": "10" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 154, + "last": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "! (film_id > 10)", + "leftOperand": "! (film_id", + "operator": ">", + "rightOperand": "10)" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 173, + "last": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "description" + ], + "isOperator": false, + "expr": "description IS NULL", + "leftOperand": "description IS NULL", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 194, + "last": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "description" + ], + "isOperator": false, + "expr": "description IS NOT NULL", + "leftOperand": "description IS NOT NULL", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 211, + "last": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id BETWEEN 10 AND 20", + "leftOperand": "film_id BETWEEN 10 AND 20", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 228, + "last": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id NOT BETWEEN 10 AND 20", + "leftOperand": "film_id NOT BETWEEN 10 AND 20", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 249, + "last": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id IN (3,5,7)", + "leftOperand": "film_id IN (3,5,7)", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 272, + "last": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "rating", + "UPPER", + "pg" + ], + "isOperator": false, + "expr": "rating = UPPER('pg')", + "leftOperand": "rating", + "operator": "=", + "rightOperand": "UPPER('pg')" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 295, + "last": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "rating", + "SOUNDS", + "PG" + ], + "isOperator": false, + "expr": "rating SOUNDS LIKE 'PG'", + "leftOperand": "rating SOUNDS LIKE 'PG'", + "operator": "", + "rightOperand": "" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 315, + "last": 333 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectWhereCollate.in b/tests/data/parser/parseSelectWhereCollate.in new file mode 100644 index 000000000..a1c97b9a7 --- /dev/null +++ b/tests/data/parser/parseSelectWhereCollate.in @@ -0,0 +1 @@ +SELECT 1 FROM my_table WHERE first_col = 'foo' AND second_col COLLATE utf8_bin = 'bar'; \ No newline at end of file diff --git a/tests/data/parser/parseSelectWhereCollate.out b/tests/data/parser/parseSelectWhereCollate.out new file mode 100644 index 000000000..7e315b7f0 --- /dev/null +++ b/tests/data/parser/parseSelectWhereCollate.out @@ -0,0 +1,449 @@ +{ + "query": "SELECT 1 FROM my_table WHERE first_col = 'foo' AND second_col COLLATE utf8_bin = 'bar';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT 1 FROM my_table WHERE first_col = 'foo' AND second_col COLLATE utf8_bin = 'bar';", + "len": 96, + "last": 96, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 29, + "idx": 29, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "first_col", + "value": "first_col", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "second_col", + "value": "second_col", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8_bin", + "value": "utf8_bin", + "keyword": null, + "type": { + "@type": "@12" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'bar'", + "value": "bar", + "keyword": null, + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@36" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "my_table", + "column": null, + "expr": "my_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "first_col", + "foo" + ], + "isOperator": false, + "expr": "first_col = 'foo'", + "leftOperand": "first_col", + "operator": "=", + "rightOperand": "'foo'" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "second_col", + "utf8_bin", + "bar" + ], + "isOperator": false, + "expr": "second_col COLLATE utf8_bin = 'bar'", + "leftOperand": "second_col COLLATE utf8_bin", + "operator": "=", + "rightOperand": "'bar'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectWithParenthesis.in b/tests/data/parser/parseSelectWithParenthesis.in new file mode 100644 index 000000000..3c47d72e9 --- /dev/null +++ b/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/tests/data/parser/parseSelectWithParenthesis.out b/tests/data/parser/parseSelectWithParenthesis.out new file mode 100644 index 000000000..ba3a1c6f5 --- /dev/null +++ b/tests/data/parser/parseSelectWithParenthesis.out @@ -0,0 +1,286 @@ +{ + "query": "(SELECT first_name FROM `actor` LIMIT 1, 2)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "(SELECT first_name FROM `actor` LIMIT 1, 2)", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 17, + "idx": 17, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "first_name", + "value": "first_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@5" + }, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@19" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "first_name", + "expr": "first_name", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 1, + "rowCount": 2 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectWrongOrder.out b/tests/data/parser/parseSelectWrongOrder.out index 8901df2ef..ad408b74a 100644 --- a/tests/data/parser/parseSelectWrongOrder.out +++ b/tests/data/parser/parseSelectWrongOrder.out @@ -1 +1,380 @@ -a:4:{s:5:"query";s:56:"SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:56:"SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20";s:3:"len";i:56;s:4:"last";i:56;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:23:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"name2";s:5:"value";s:5:"name2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:12;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:9:"tablename";s:5:"value";s:9:"tablename";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"10";s:5:"value";i:10;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:39;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:47;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"pid";s:5:"value";s:3:"pid";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:48;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:51;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:52;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"20";s:5:"value";i:20;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:54;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:23;s:3:"idx";i:23;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:2:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:3:"pid";s:4:"expr";s:3:"pid";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}i:1;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";s:5:"name2";s:4:"expr";s:5:"name2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"tablename";s:6:"column";N;s:4:"expr";s:9:"tablename";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:3:"pid";}s:10:"isOperator";b:0;s:4:"expr";s:8:"pid = 20";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:0;s:8:"rowCount";i:10;}s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:21;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:31:"Unexpected ordering of clauses.";i:1;r:86;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20", + "leftOperand": "pid", + "operator": "=", + "rightOperand": "20" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 10 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected ordering of clauses.", + { + "@type": "@17" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSelectWrongOrder2.out b/tests/data/parser/parseSelectWrongOrder2.out index af3b744a3..80989995f 100644 --- a/tests/data/parser/parseSelectWrongOrder2.out +++ b/tests/data/parser/parseSelectWrongOrder2.out @@ -1 +1,494 @@ -a:4:{s:5:"query";s:86:"SELECT DISTINCT * FROM tbl1 INNER JOIN tbl2 ON id1 = id2 WHERE 1=1 LEFT OUTER JOIN l3;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:86:"SELECT DISTINCT * FROM tbl1 INNER JOIN tbl2 ON id1 = id2 WHERE 1=1 LEFT OUTER JOIN l3;";s:3:"len";i:86;s:4:"last";i:86;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:33:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"DISTINCT";s:5:"value";s:8:"DISTINCT";s:7:"keyword";s:8:"DISTINCT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:16;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:18;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:22;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"tbl1";s:5:"value";s:4:"tbl1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:23;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:10:"INNER JOIN";s:5:"value";s:10:"INNER JOIN";s:7:"keyword";s:10:"INNER JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:28;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:38;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"tbl2";s:5:"value";s:4:"tbl2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:39;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:43;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"ON";s:5:"value";s:2:"ON";s:7:"keyword";s:2:"ON";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:44;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"id1";s:5:"value";s:3:"id1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:50;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:51;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:52;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"id2";s:5:"value";s:3:"id2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:53;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:56;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:57;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:63;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:65;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:66;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:15:"LEFT OUTER JOIN";s:5:"value";s:15:"LEFT OUTER JOIN";s:7:"keyword";s:15:"LEFT OUTER JOIN";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:67;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"l3";s:5:"value";s:2:"l3";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:83;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:85;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:33;s:3:"idx";i:33;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:4:"tbl1";s:6:"column";N;s:4:"expr";s:4:"tbl1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:3:"1=1";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";a:1:{i:0;O:43:"PhpMyAdmin\SqlParser\Components\JoinKeyword":4:{s:4:"type";s:4:"LEFT";s:4:"expr";O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:2:"l3";s:6:"column";N;s:4:"expr";s:2:"l3";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}s:2:"on";N;s:5:"using";N;}}s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"DISTINCT";}}s:5:"first";i:0;s:4:"last";i:30;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:31:"Unexpected ordering of clauses.";i:1;r:163;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SELECT DISTINCT * FROM tbl1 INNER JOIN tbl2 ON id1 = id2 WHERE 1=1 LEFT OUTER JOIN l3;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 33, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl1", + "value": "tbl1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl2", + "value": "tbl2", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id1", + "value": "id1", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id2", + "value": "id2", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT OUTER JOIN", + "value": "LEFT OUTER JOIN", + "keyword": "LEFT OUTER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "l3", + "value": "l3", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@39" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tbl1", + "column": null, + "expr": "tbl1", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "1=1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "l3", + "column": null, + "expr": "l3", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected ordering of clauses.", + { + "@type": "@28" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetCharacterSet.out b/tests/data/parser/parseSetCharacterSet.out index ffb0537dc..b3f113df3 100644 --- a/tests/data/parser/parseSetCharacterSet.out +++ b/tests/data/parser/parseSetCharacterSet.out @@ -1 +1,127 @@ -a:4:{s:5:"query";s:24:"SET CHARACTER SET 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:24:"SET CHARACTER SET 'utf8'";s:3:"len";i:24;s:4:"last";i:24;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:6:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:18;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:6;s:3:"idx";i:6;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:13:"CHARACTER SET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET CHARACTER SET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET CHARACTER SET 'utf8'", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARACTER SET", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "endOptions": null, + "set": [], + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetCharacterSetError.out b/tests/data/parser/parseSetCharacterSetError.out index 696cb701d..61af6f967 100644 --- a/tests/data/parser/parseSetCharacterSetError.out +++ b/tests/data/parser/parseSetCharacterSetError.out @@ -1 +1,122 @@ -a:4:{s:5:"query";s:18:"SET CHARACTER SET ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:18:"SET CHARACTER SET ";s:3:"len";i:18;s:4:"last";i:18;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:17;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:13:"CHARACTER SET";s:6:"equals";b:0;s:4:"expr";s:0:"";s:5:"value";s:0:"";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:59:"Value/Expression for the option CHARACTER SET was expected.";i:1;r:30;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SET CHARACTER SET ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET CHARACTER SET ", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARACTER SET", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "endOptions": null, + "set": [], + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value/Expression for the option CHARACTER SET was expected.", + { + "@type": "@7" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetCharset.out b/tests/data/parser/parseSetCharset.out index e2c7ec71f..9a7974d7b 100644 --- a/tests/data/parser/parseSetCharset.out +++ b/tests/data/parser/parseSetCharset.out @@ -1 +1,127 @@ -a:4:{s:5:"query";s:18:"SET CHARSET 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:18:"SET CHARSET 'utf8'";s:3:"len";i:18;s:4:"last";i:18;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:6:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CHARSET";s:5:"value";s:7:"CHARSET";s:7:"keyword";s:7:"CHARSET";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:6;s:3:"idx";i:6;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:7:"CHARSET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET CHARSET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET CHARSET 'utf8'", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARSET", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "endOptions": null, + "set": [], + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetCharsetError.out b/tests/data/parser/parseSetCharsetError.out index 33eda0fae..7748e7836 100644 --- a/tests/data/parser/parseSetCharsetError.out +++ b/tests/data/parser/parseSetCharsetError.out @@ -1 +1,124 @@ -a:4:{s:5:"query";s:12:"SET CHARSET ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:12:"SET CHARSET ";s:3:"len";i:12;s:4:"last";i:12;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CHARSET";s:5:"value";s:7:"CHARSET";s:7:"keyword";s:7:"CHARSET";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:7:"CHARSET";s:6:"equals";b:0;s:4:"expr";s:0:"";s:5:"value";s:0:"";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:53:"Value/Expression for the option CHARSET was expected.";i:1;r:30;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SET CHARSET ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET CHARSET ", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARSET", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "endOptions": null, + "set": [], + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value/Expression for the option CHARSET was expected.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetError1.out b/tests/data/parser/parseSetError1.out index 5db7717de..d75eed7e1 100644 --- a/tests/data/parser/parseSetError1.out +++ b/tests/data/parser/parseSetError1.out @@ -1 +1,185 @@ -a:4:{s:5:"query";s:39:"SET CHARSET 'utf8' CHARACTER SET 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:39:"SET CHARSET 'utf8' CHARACTER SET 'utf8'";s:3:"len";i:39;s:4:"last";i:39;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"CHARSET";s:5:"value";s:7:"CHARSET";s:7:"keyword";s:7:"CHARSET";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:11;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:12;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:13:"CHARACTER SET";s:5:"value";s:13:"CHARACTER SET";s:7:"keyword";s:13:"CHARACTER SET";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:19;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:2:{i:3;a:4:{s:4:"name";s:7:"CHARSET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}i:5;a:4:{s:4:"name";s:13:"CHARACTER SET";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:37:"This option conflicts with "CHARSET".";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SET CHARSET 'utf8' CHARACTER SET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET CHARSET 'utf8' CHARACTER SET 'utf8'", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "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" + } + } + }, + "endOptions": null, + "set": [], + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"CHARSET\".", + { + "@type": "@11" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetGlobalVariable.in b/tests/data/parser/parseSetGlobalVariable.in new file mode 100644 index 000000000..6686a8c45 --- /dev/null +++ b/tests/data/parser/parseSetGlobalVariable.in @@ -0,0 +1 @@ +SET GLOBAL max_connections = 1 \ No newline at end of file diff --git a/tests/data/parser/parseSetGlobalVariable.out b/tests/data/parser/parseSetGlobalVariable.out new file mode 100644 index 000000000..f3fe3bb33 --- /dev/null +++ b/tests/data/parser/parseSetGlobalVariable.out @@ -0,0 +1,176 @@ +{ + "query": "SET GLOBAL max_connections = 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET GLOBAL max_connections = 1", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GLOBAL", + "value": "GLOBAL", + "keyword": "GLOBAL", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "max_connections", + "value": "max_connections", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "GLOBAL" + } + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "max_connections", + "value": "1" + } + ], + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetNames.out b/tests/data/parser/parseSetNames.out index eef656d23..15414d4b8 100644 --- a/tests/data/parser/parseSetNames.out +++ b/tests/data/parser/parseSetNames.out @@ -1 +1,127 @@ -a:4:{s:5:"query";s:16:"SET NAMES 'utf8'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:16:"SET NAMES 'utf8'";s:3:"len";i:16;s:4:"last";i:16;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:6:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"NAMES";s:5:"value";s:5:"NAMES";s:7:"keyword";s:5:"NAMES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:6;s:3:"idx";i:6;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:5:"NAMES";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET NAMES 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET NAMES 'utf8'", + "len": 16, + "last": 16, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 6, + "idx": 6, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "endOptions": null, + "set": [], + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetNames2.out b/tests/data/parser/parseSetNames2.out index aaa25051d..ae3331ad2 100644 --- a/tests/data/parser/parseSetNames2.out +++ b/tests/data/parser/parseSetNames2.out @@ -1 +1,181 @@ -a:4:{s:5:"query";s:42:"SET NAMES 'utf8' COLLATE 'utf8_general_ci'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:42:"SET NAMES 'utf8' COLLATE 'utf8_general_ci'";s:3:"len";i:42;s:4:"last";i:42;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"NAMES";s:5:"value";s:5:"NAMES";s:7:"keyword";s:5:"NAMES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLLATE";s:5:"value";s:7:"COLLATE";s:7:"keyword";s:7:"COLLATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"'utf8_general_ci'";s:5:"value";s:15:"utf8_general_ci";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":5:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:5:"NAMES";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:11:"end_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:7:"COLLATE";s:6:"equals";b:0;s:4:"expr";s:17:"'utf8_general_ci'";s:5:"value";s:15:"utf8_general_ci";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET NAMES 'utf8' COLLATE 'utf8_general_ci'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET NAMES 'utf8' COLLATE 'utf8_general_ci'", + "len": 42, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8_general_ci'", + "value": "utf8_general_ci", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "endOptions": { + "@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 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetNames3.out b/tests/data/parser/parseSetNames3.out index 60e5c90db..b78b74f13 100644 --- a/tests/data/parser/parseSetNames3.out +++ b/tests/data/parser/parseSetNames3.out @@ -1 +1,165 @@ -a:4:{s:5:"query";s:25:"SET NAMES 'utf8' DEFAULT;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:25:"SET NAMES 'utf8' DEFAULT;";s:3:"len";i:25;s:4:"last";i:25;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:9:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"NAMES";s:5:"value";s:5:"NAMES";s:7:"keyword";s:5:"NAMES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:9;s:3:"idx";i:9;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":5:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:5:"NAMES";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:11:"end_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:7:"DEFAULT";}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:6;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "SET NAMES 'utf8' DEFAULT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET NAMES 'utf8' DEFAULT;", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "endOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DEFAULT" + } + }, + "set": [], + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetNamesError.out b/tests/data/parser/parseSetNamesError.out index bc4b66a99..86374ad57 100644 --- a/tests/data/parser/parseSetNamesError.out +++ b/tests/data/parser/parseSetNamesError.out @@ -1 +1,122 @@ -a:4:{s:5:"query";s:10:"SET NAMES ";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:10:"SET NAMES ";s:3:"len";i:10;s:4:"last";i:10;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"NAMES";s:5:"value";s:5:"NAMES";s:7:"keyword";s:5:"NAMES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":4:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:5:"NAMES";s:6:"equals";b:0;s:4:"expr";s:0:"";s:5:"value";s:0:"";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:51:"Value/Expression for the option NAMES was expected.";i:1;r:30;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SET NAMES ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET NAMES ", + "len": 10, + "last": 10, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "endOptions": null, + "set": [], + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value/Expression for the option NAMES was expected.", + { + "@type": "@7" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetNamesError2.out b/tests/data/parser/parseSetNamesError2.out index c4d6c74b5..bd379bcd8 100644 --- a/tests/data/parser/parseSetNamesError2.out +++ b/tests/data/parser/parseSetNamesError2.out @@ -1 +1,184 @@ -a:4:{s:5:"query";s:42:"SET NAMES 'utf8' DEFAULT 'utf8_general_ci'";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:42:"SET NAMES 'utf8' DEFAULT 'utf8_general_ci'";s:3:"len";i:42;s:4:"last";i:42;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:10:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"NAMES";s:5:"value";s:5:"NAMES";s:7:"keyword";s:5:"NAMES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"DEFAULT";s:5:"value";s:7:"DEFAULT";s:7:"keyword";s:7:"DEFAULT";s:4:"type";i:1;s:5:"flags";i:35;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:24;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"'utf8_general_ci'";s:5:"value";s:15:"utf8_general_ci";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:25;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:10;s:3:"idx";i:10;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":5:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:5:"NAMES";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:11:"end_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:7:"DEFAULT";}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:8;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:65;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SET NAMES 'utf8' DEFAULT 'utf8_general_ci'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET NAMES 'utf8' DEFAULT 'utf8_general_ci'", + "len": 42, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 10, + "idx": 10, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8_general_ci'", + "value": "utf8_general_ci", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "endOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DEFAULT" + } + }, + "set": [], + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetNamesError3.out b/tests/data/parser/parseSetNamesError3.out index a33d19827..e425895c1 100644 --- a/tests/data/parser/parseSetNamesError3.out +++ b/tests/data/parser/parseSetNamesError3.out @@ -1 +1,167 @@ -a:4:{s:5:"query";s:24:"SET NAMES 'utf8' COLLATE";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:24:"SET NAMES 'utf8' COLLATE";s:3:"len";i:24;s:4:"last";i:24;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:8:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:3;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"NAMES";s:5:"value";s:5:"NAMES";s:7:"keyword";s:5:"NAMES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:4;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:9;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"'utf8'";s:5:"value";s:4:"utf8";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:1;s:8:"position";i:10;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"COLLATE";s:5:"value";s:7:"COLLATE";s:7:"keyword";s:7:"COLLATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:17;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:8;s:3:"idx";i:8;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Statements\SetStatement":5:{s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:3;a:4:{s:4:"name";s:5:"NAMES";s:6:"equals";b:0;s:4:"expr";s:6:"'utf8'";s:5:"value";s:4:"utf8";}}}s:11:"end_options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;a:4:{s:4:"name";s:7:"COLLATE";s:6:"equals";b:0;s:4:"expr";s:0:"";s:5:"value";s:0:"";}}}s:3:"set";a:0:{}s:5:"first";i:0;s:4:"last";i:6;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:53:"Value/Expression for the option COLLATE was expected.";i:1;r:51;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "SET NAMES 'utf8' COLLATE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET NAMES 'utf8' COLLATE", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "endOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COLLATE", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "set": [], + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value/Expression for the option COLLATE was expected.", + { + "@type": "@11" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetVariable.in b/tests/data/parser/parseSetVariable.in new file mode 100644 index 000000000..68b697d6a --- /dev/null +++ b/tests/data/parser/parseSetVariable.in @@ -0,0 +1 @@ +SET @foo = 1 \ No newline at end of file diff --git a/tests/data/parser/parseSetVariable.out b/tests/data/parser/parseSetVariable.out new file mode 100644 index 000000000..0c4521fbf --- /dev/null +++ b/tests/data/parser/parseSetVariable.out @@ -0,0 +1,152 @@ +{ + "query": "SET @foo = 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET @foo = 1", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "@foo", + "value": "1" + } + ], + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseSetVariable2.in b/tests/data/parser/parseSetVariable2.in new file mode 100644 index 000000000..a1e851a2d --- /dev/null +++ b/tests/data/parser/parseSetVariable2.in @@ -0,0 +1 @@ +SET @foo := 1 diff --git a/tests/data/parser/parseSetVariable2.out b/tests/data/parser/parseSetVariable2.out new file mode 100644 index 000000000..48f8f98e6 --- /dev/null +++ b/tests/data/parser/parseSetVariable2.out @@ -0,0 +1,163 @@ +{ + "query": "SET @foo := 1\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "SET @foo := 1\n", + "len": 14, + "last": 14, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 8, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "@foo", + "value": "1" + } + ], + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTable1.in b/tests/data/parser/parseTable1.in new file mode 100644 index 000000000..6fbfa67ae --- /dev/null +++ b/tests/data/parser/parseTable1.in @@ -0,0 +1 @@ +TABLE `fo` ORDER BY `fo`.`uuid` ASC; \ No newline at end of file diff --git a/tests/data/parser/parseTable1.out b/tests/data/parser/parseTable1.out new file mode 100644 index 000000000..57c32e822 --- /dev/null +++ b/tests/data/parser/parseTable1.out @@ -0,0 +1,195 @@ +{ + "query": "TABLE `fo` ORDER BY `fo`.`uuid` ASC;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "TABLE `fo` ORDER BY `fo`.`uuid` ASC;", + "len": 36, + "last": 36, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 13, + "idx": 13, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fo`", + "value": "fo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fo`", + "value": "fo", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uuid`", + "value": "uuid", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransaction.out b/tests/data/parser/parseTransaction.out index 642340ea8..4cba5f8fe 100644 --- a/tests/data/parser/parseTransaction.out +++ b/tests/data/parser/parseTransaction.out @@ -1,10 +1,652 @@ -a:4:{s:5:"query";s:118:"START TRANSACTION; -SELECT @A:=SUM(salary) FROM table1 WHERE type=1; -UPDATE table2 SET summary=@A WHERE type=1; -COMMIT;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:118:"START TRANSACTION; -SELECT @A:=SUM(salary) FROM table1 WHERE type=1; -UPDATE table2 SET summary=@A WHERE type=1; -COMMIT;";s:3:"len";i:118;s:4:"last";i:118;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:43:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"START TRANSACTION";s:5:"value";s:17:"START TRANSACTION";s:7:"keyword";s:17:"START TRANSACTION";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:17;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:":=";s:5:"value";s:2:":=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:8;s:8:"position";i:28;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SUM";s:5:"value";s:3:"SUM";s:7:"keyword";s:3:"SUM";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"salary";s:5:"value";s:6:"salary";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:7:"keyword";s:4:"TYPE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:60;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:65;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:66;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:68;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"summary";s:5:"value";s:7:"summary";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:93;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:94;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:97;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:7:"keyword";s:4:"TYPE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:103;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:107;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:108;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:109;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"COMMIT";s:5:"value";s:6:"COMMIT";s:7:"keyword";s:6:"COMMIT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:111;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:117;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:43;s:3:"idx";i:43;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:52:"PhpMyAdmin\SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:1;s:10:"statements";a:2:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"@A:=SUM(salary)";s:5:"alias";N;s:8:"function";s:3:"SUM";s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:1;s:4:"last";i:20;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:7:"summary";s:5:"value";s:2:"@A";}}s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:21;s:4:"last";i:37;}}s:3:"end";O:52:"PhpMyAdmin\SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:2;s:10:"statements";N;s:3:"end";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"COMMIT";}}s:5:"first";i:38;s:4:"last";i:40;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:17:"START TRANSACTION";}}s:5:"first";i:0;s:4:"last";i:0;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 43, + "idx": 43, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 8, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUM", + "value": "SUM", + "keyword": "SUM", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "salary", + "value": "salary", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "summary", + "value": "summary", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "@A:=SUM(salary)", + "alias": null, + "function": "SUM", + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1", + "leftOperand": "type", + "operator": "=", + "rightOperand": "1" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1", + "leftOperand": "type", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 37 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 38, + "last": 40 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransaction2.out b/tests/data/parser/parseTransaction2.out index 37177e051..40a56f3ad 100644 --- a/tests/data/parser/parseTransaction2.out +++ b/tests/data/parser/parseTransaction2.out @@ -1,10 +1,652 @@ -a:4:{s:5:"query";s:120:"START TRANSACTION; -SELECT @A:=SUM(salary) FROM table1 WHERE type=1; -UPDATE table2 SET summary=@A WHERE type=1; -ROLLBACK;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:120:"START TRANSACTION; -SELECT @A:=SUM(salary) FROM table1 WHERE type=1; -UPDATE table2 SET summary=@A WHERE type=1; -ROLLBACK;";s:3:"len";i:120;s:4:"last";i:120;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:43:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:17:"START TRANSACTION";s:5:"value";s:17:"START TRANSACTION";s:7:"keyword";s:17:"START TRANSACTION";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:17;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:26;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:":=";s:5:"value";s:2:":=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:8;s:8:"position";i:28;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SUM";s:5:"value";s:3:"SUM";s:7:"keyword";s:3:"SUM";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:30;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"salary";s:5:"value";s:6:"salary";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:7:"keyword";s:4:"TYPE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:60;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:65;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:66;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:68;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:82;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:7:"summary";s:5:"value";s:7:"summary";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:93;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:94;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:97;}i:34;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:35;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:7:"keyword";s:4:"TYPE";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:103;}i:36;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:107;}i:37;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:108;}i:38;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:109;}i:39;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:40;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"ROLLBACK";s:5:"value";s:8:"ROLLBACK";s:7:"keyword";s:8:"ROLLBACK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:111;}i:41;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:119;}i:42;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:43;s:3:"idx";i:43;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:52:"PhpMyAdmin\SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:1;s:10:"statements";a:2:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"@A:=SUM(salary)";s:5:"alias";N;s:8:"function";s:3:"SUM";s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:1;s:4:"last";i:20;}i:1;O:47:"PhpMyAdmin\SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:7:"summary";s:5:"value";s:2:"@A";}}s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:21;s:4:"last";i:37;}}s:3:"end";O:52:"PhpMyAdmin\SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:2;s:10:"statements";N;s:3:"end";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"ROLLBACK";}}s:5:"first";i:38;s:4:"last";i:40;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:17:"START TRANSACTION";}}s:5:"first";i:0;s:4:"last";i:0;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "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", + "strict": false, + "errors": [], + "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", + "count": 43, + "idx": 43, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 8, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUM", + "value": "SUM", + "keyword": "SUM", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "salary", + "value": "salary", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "summary", + "value": "summary", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 1, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ROLLBACK", + "value": "ROLLBACK", + "keyword": "ROLLBACK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "@A:=SUM(salary)", + "alias": null, + "function": "SUM", + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1", + "leftOperand": "type", + "operator": "=", + "rightOperand": "1" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1", + "leftOperand": "type", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 37 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ROLLBACK" + } + }, + "first": 38, + "last": 40 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransaction3.in b/tests/data/parser/parseTransaction3.in index bc72a704d..5e7ed78b9 100644 --- a/tests/data/parser/parseTransaction3.in +++ b/tests/data/parser/parseTransaction3.in @@ -1,3 +1,3 @@ begin; -SELECT * FROM `tablename` +SELECT * FROM `tablename`; commit; diff --git a/tests/data/parser/parseTransaction3.out b/tests/data/parser/parseTransaction3.out index a6ef27eae..7d8fcaff2 100644 --- a/tests/data/parser/parseTransaction3.out +++ b/tests/data/parser/parseTransaction3.out @@ -1,10 +1,267 @@ -a:4:{s:5:"query";s:41:"begin; -SELECT * FROM `tablename` -commit; -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:41:"begin; -SELECT * FROM `tablename` -commit; -";s:3:"len";i:41;s:4:"last";i:41;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:15:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"begin";s:5:"value";s:5:"begin";s:7:"keyword";s:5:"BEGIN";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:5;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:7:"keyword";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:7;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"*";s:5:"value";s:1:"*";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:1;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:7:"keyword";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:16;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:11:"`tablename`";s:5:"value";s:9:"tablename";s:7:"keyword";N;s:4:"type";i:8;s:5:"flags";i:2;s:8:"position";i:21;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:32;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"commit";s:5:"value";s:6:"commit";s:7:"keyword";s:6:"COMMIT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:33;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:39;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:15;s:3:"idx";i:15;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\SelectStatement":16:{s:4:"expr";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:1:"*";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:9:"tablename";s:6:"column";N;s:4:"expr";s:11:"`tablename`";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";N;s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:11:"end_options";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:1;s:4:"last";i:10;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:76:"A new statement was found, but no delimiter between it and the previous one.";i:1;r:86;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "begin;\nSELECT * FROM `tablename`;\ncommit;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "begin;\nSELECT * FROM `tablename`;\ncommit;\n", + "len": 42, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 16, + "idx": 16, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "begin", + "value": "begin", + "keyword": "BEGIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tablename`", + "value": "tablename", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "commit", + "value": "commit", + "keyword": "COMMIT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "tablename", + "column": null, + "expr": "`tablename`", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransaction4.in b/tests/data/parser/parseTransaction4.in new file mode 100644 index 000000000..5f2cab5c5 --- /dev/null +++ b/tests/data/parser/parseTransaction4.in @@ -0,0 +1,3 @@ + +START TRANSACTION; +SET time_zone = "+00:00"; diff --git a/tests/data/parser/parseTransaction4.out b/tests/data/parser/parseTransaction4.out new file mode 100644 index 000000000..ed607a241 --- /dev/null +++ b/tests/data/parser/parseTransaction4.out @@ -0,0 +1,233 @@ +{ + "query": "\nSTART TRANSACTION;\nSET time_zone = \"+00:00\";\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "\nSTART TRANSACTION;\nSET time_zone = \"+00:00\";\n", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 7, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@5" + }, + "flags": 11, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time_zone", + "value": "time_zone", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"+00:00\"", + "value": "+00:00", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@3" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "time_zone", + "value": "\"+00:00\"" + } + ], + "first": 2, + "last": 10 + } + ], + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 0, + "last": 1 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransaction5.in b/tests/data/parser/parseTransaction5.in new file mode 100644 index 000000000..7efc52fd5 --- /dev/null +++ b/tests/data/parser/parseTransaction5.in @@ -0,0 +1,6 @@ +BEGIN; + INSERT INTO t2 VALUES (3); + SAVEPOINT my_savepoint; + INSERT INTO t2 VALUES (4); + RELEASE SAVEPOINT my_savepoint; +COMMIT; \ No newline at end of file diff --git a/tests/data/parser/parseTransaction5.out b/tests/data/parser/parseTransaction5.out new file mode 100644 index 000000000..af9d32218 --- /dev/null +++ b/tests/data/parser/parseTransaction5.out @@ -0,0 +1,660 @@ +{ + "query": "BEGIN;\n INSERT INTO t2 VALUES (3);\n SAVEPOINT my_savepoint;\n INSERT INTO t2 VALUES (4);\n RELEASE SAVEPOINT my_savepoint;\nCOMMIT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "BEGIN;\n INSERT INTO t2 VALUES (3);\n SAVEPOINT my_savepoint;\n INSERT INTO t2 VALUES (4);\n RELEASE SAVEPOINT my_savepoint;\nCOMMIT;", + "len": 140, + "last": 140, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 44, + "idx": 44, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SAVEPOINT", + "value": "SAVEPOINT", + "keyword": "SAVEPOINT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_savepoint", + "value": "my_savepoint", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RELEASE", + "value": "RELEASE", + "keyword": "RELEASE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SAVEPOINT", + "value": "SAVEPOINT", + "keyword": "SAVEPOINT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_savepoint", + "value": "my_savepoint", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "3" + ], + "values": [ + "3" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "4" + ], + "values": [ + "4" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 31 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 41, + "last": 41 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "BEGIN" + } + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@24" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@42" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransaction6.in b/tests/data/parser/parseTransaction6.in new file mode 100644 index 000000000..9e9e9d5f8 --- /dev/null +++ b/tests/data/parser/parseTransaction6.in @@ -0,0 +1,6 @@ +BEGIN; + INSERT INTO t2 VALUES (3); + SAVEPOINT my_savepoint; + INSERT INTO t2 VALUES (4); + ROLLBACK WORK TO SAVEPOINT my_savepoint; +COMMIT; \ No newline at end of file diff --git a/tests/data/parser/parseTransaction6.out b/tests/data/parser/parseTransaction6.out new file mode 100644 index 000000000..5f4d9f332 --- /dev/null +++ b/tests/data/parser/parseTransaction6.out @@ -0,0 +1,740 @@ +{ + "query": "BEGIN;\n INSERT INTO t2 VALUES (3);\n SAVEPOINT my_savepoint;\n INSERT INTO t2 VALUES (4);\n ROLLBACK WORK TO SAVEPOINT my_savepoint;\nCOMMIT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "BEGIN;\n INSERT INTO t2 VALUES (3);\n SAVEPOINT my_savepoint;\n INSERT INTO t2 VALUES (4);\n ROLLBACK WORK TO SAVEPOINT my_savepoint;\nCOMMIT;", + "len": 149, + "last": 149, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 48, + "idx": 48, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SAVEPOINT", + "value": "SAVEPOINT", + "keyword": "SAVEPOINT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_savepoint", + "value": "my_savepoint", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ROLLBACK", + "value": "ROLLBACK", + "keyword": "ROLLBACK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WORK", + "value": "WORK", + "keyword": "WORK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SAVEPOINT", + "value": "SAVEPOINT", + "keyword": "SAVEPOINT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_savepoint", + "value": "my_savepoint", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "3" + ], + "values": [ + "3" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "4" + ], + "values": [ + "4" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 31 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ROLLBACK", + "2": "WORK" + } + }, + "first": 32, + "last": 42 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "BEGIN" + } + }, + "first": 0, + "last": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 43, + "last": 45 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@24" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@46" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@48" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@50" + }, + 0 + ], + [ + "No transaction was previously started.", + { + "@type": "@53" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransaction7.in b/tests/data/parser/parseTransaction7.in new file mode 100644 index 000000000..f5ed6a0fd --- /dev/null +++ b/tests/data/parser/parseTransaction7.in @@ -0,0 +1,6 @@ +BEGIN; + INSERT INTO t2 VALUES (3); + SAVEPOINT my_savepoint; + INSERT INTO t2 VALUES (4); + ROLLBACK TO SAVEPOINT my_savepoint; +COMMIT; \ No newline at end of file diff --git a/tests/data/parser/parseTransaction7.out b/tests/data/parser/parseTransaction7.out new file mode 100644 index 000000000..0f9091495 --- /dev/null +++ b/tests/data/parser/parseTransaction7.out @@ -0,0 +1,717 @@ +{ + "query": "BEGIN;\n INSERT INTO t2 VALUES (3);\n SAVEPOINT my_savepoint;\n INSERT INTO t2 VALUES (4);\n ROLLBACK TO SAVEPOINT my_savepoint;\nCOMMIT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "BEGIN;\n INSERT INTO t2 VALUES (3);\n SAVEPOINT my_savepoint;\n INSERT INTO t2 VALUES (4);\n ROLLBACK TO SAVEPOINT my_savepoint;\nCOMMIT;", + "len": 144, + "last": 144, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 46, + "idx": 46, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SAVEPOINT", + "value": "SAVEPOINT", + "keyword": "SAVEPOINT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_savepoint", + "value": "my_savepoint", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": { + "@type": "@20" + }, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ROLLBACK", + "value": "ROLLBACK", + "keyword": "ROLLBACK", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SAVEPOINT", + "value": "SAVEPOINT", + "keyword": "SAVEPOINT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_savepoint", + "value": "my_savepoint", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "3" + ], + "values": [ + "3" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "4" + ], + "values": [ + "4" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 31 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ROLLBACK" + } + }, + "first": 32, + "last": 40 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "BEGIN" + } + }, + "first": 0, + "last": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 41, + "last": 43 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@24" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@44" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@46" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@48" + }, + 0 + ], + [ + "No transaction was previously started.", + { + "@type": "@51" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseTransactionErr1.out b/tests/data/parser/parseTransactionErr1.out index da3624c7e..cc1d550a8 100644 --- a/tests/data/parser/parseTransactionErr1.out +++ b/tests/data/parser/parseTransactionErr1.out @@ -1 +1,94 @@ -a:4:{s:5:"query";s:7:"COMMIT;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:7:"COMMIT;";s:3:"len";i:7;s:4:"last";i:7;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:3:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"COMMIT";s:5:"value";s:6:"COMMIT";s:7:"keyword";s:6:"COMMIT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:3;s:3:"idx";i:3;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:52:"PhpMyAdmin\SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:2;s:10:"statements";N;s:3:"end";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"COMMIT";}}s:5:"first";i:0;s:4:"last";i:0;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:38:"No transaction was previously started.";i:1;r:9;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "COMMIT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "COMMIT;", + "len": 7, + "last": 7, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 3, + "idx": 3, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "No transaction was previously started.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUnlock1.out b/tests/data/parser/parseUnlock1.out index 044bfab7f..62b8e5eb6 100644 --- a/tests/data/parser/parseUnlock1.out +++ b/tests/data/parser/parseUnlock1.out @@ -1 +1,104 @@ -a:4:{s:5:"query";s:14:"UNLOCK TABLES;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:14:"UNLOCK TABLES;";s:3:"len";i:14;s:4:"last";i:14;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:5:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UNLOCK";s:5:"value";s:6:"UNLOCK";s:7:"keyword";s:6:"UNLOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:5;s:3:"idx";i:5;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":5:{s:6:"locked";a:0:{}s:6:"isLock";b:0;s:7:"options";N;s:5:"first";i:0;s:4:"last";i:3;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "UNLOCK TABLES;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UNLOCK TABLES;", + "len": 14, + "last": 14, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNLOCK", + "value": "UNLOCK", + "keyword": "UNLOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@8" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": false, + "options": null, + "first": 0, + "last": 3 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUnlockErr1.out b/tests/data/parser/parseUnlockErr1.out index 6e3757278..c549b0e7a 100644 --- a/tests/data/parser/parseUnlockErr1.out +++ b/tests/data/parser/parseUnlockErr1.out @@ -1 +1,136 @@ -a:4:{s:5:"query";s:18:"UNLOCK TABLES abc;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:18:"UNLOCK TABLES abc;";s:3:"len";i:18;s:4:"last";i:18;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:7:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UNLOCK";s:5:"value";s:6:"UNLOCK";s:7:"keyword";s:6:"UNLOCK";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"TABLES";s:5:"value";s:6:"TABLES";s:7:"keyword";s:6:"TABLES";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:13;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"abc";s:5:"value";s:3:"abc";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:14;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:17;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:7;s:3:"idx";i:7;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:45:"PhpMyAdmin\SqlParser\Statements\LockStatement":5:{s:6:"locked";a:0:{}s:6:"isLock";b:0;s:7:"options";N;s:5:"first";i:0;s:4:"last";i:4;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:37;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "UNLOCK TABLES abc;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UNLOCK TABLES abc;", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 7, + "idx": 7, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNLOCK", + "value": "UNLOCK", + "keyword": "UNLOCK", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": false, + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate.out b/tests/data/parser/parseUpdate.out deleted file mode 100644 index 6a26d3cca..000000000 --- a/tests/data/parser/parseUpdate.out +++ /dev/null @@ -1,13 +0,0 @@ -a:4:{s:5:"query";s:54:"UPDATE - users -SET - username = "Dan", - id=155;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:54:"UPDATE - users -SET - username = "Dan", - id=155;";s:3:"len";i:54;s:4:"last";i:54;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:18:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:34;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:""Dan"";s:5:"value";s:3:"Dan";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:36;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:49;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"155";s:5:"value";i:155;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:50;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:53;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:18;s:3:"idx";i:18;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:8:"username";s:5:"value";s:5:""Dan"";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"id";s:5:"value";s:3:"155";}}s:5:"where";N;s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:15;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate.in b/tests/data/parser/parseUpdate1.in similarity index 100% rename from tests/data/parser/parseUpdate.in rename to tests/data/parser/parseUpdate1.in diff --git a/tests/data/parser/parseUpdate1.out b/tests/data/parser/parseUpdate1.out new file mode 100644 index 000000000..8eafbde91 --- /dev/null +++ b/tests/data/parser/parseUpdate1.out @@ -0,0 +1,284 @@ +{ + "query": "UPDATE\n users\nSET\n username = \"Dan\",\n id=155;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE\n users\nSET\n username = \"Dan\",\n id=155;", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 18, + "idx": 18, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate2.out b/tests/data/parser/parseUpdate2.out index 1e154fb4b..771bd847f 100644 --- a/tests/data/parser/parseUpdate2.out +++ b/tests/data/parser/parseUpdate2.out @@ -1,22 +1,477 @@ -a:4:{s:5:"query";s:99:"UPDATE - users -SET - username = "Dan", - id=155 -WHERE - username = "Paul" -LIMIT 1 OFFSET 2;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:99:"UPDATE - users -SET - username = "Dan", - id=155 -WHERE - username = "Paul" -LIMIT 1 OFFSET 2;";s:3:"len";i:99;s:4:"last";i:99;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:34:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:11;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:16;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:17;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:25;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:34;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:""Dan"";s:5:"value";s:3:"Dan";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:36;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:41;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:42;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:49;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"155";s:5:"value";i:155;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:50;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:64;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:72;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:73;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:""Paul"";s:5:"value";s:4:"Paul";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:75;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"LIMIT";s:5:"value";s:5:"LIMIT";s:7:"keyword";s:5:"LIMIT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:82;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:87;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:88;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:89;}i:29;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"OFFSET";s:5:"value";s:6:"OFFSET";s:7:"keyword";s:6:"OFFSET";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:90;}i:30;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:31;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"2";s:5:"value";i:2;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:97;}i:32;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:98;}i:33;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:34;s:3:"idx";i:34;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:8:"username";s:5:"value";s:5:""Dan"";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"id";s:5:"value";s:3:"155";}}s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:2:{i:0;s:8:"username";i:1;s:4:"Paul";}s:10:"isOperator";b:0;s:4:"expr";s:17:"username = "Paul"";}}s:5:"order";N;s:5:"limit";O:37:"PhpMyAdmin\SqlParser\Components\Limit":2:{s:6:"offset";i:2;s:8:"rowCount";i:1;}s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:31;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:0:{}}} \ No newline at end of file +{ + "query": "UPDATE\n users\nSET\n username = \"Dan\",\n id=155\nWHERE\n username = \"Paul\"\nLIMIT 1 OFFSET 2;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Paul\"", + "value": "Paul", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@23" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@41" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [ + "username", + "Paul" + ], + "isOperator": false, + "expr": "username = \"Paul\"", + "leftOperand": "username", + "operator": "=", + "rightOperand": "\"Paul\"" + } + ], + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 1 + }, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 31 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate3.out b/tests/data/parser/parseUpdate3.out index 86b345cef..fcaf7923f 100644 --- a/tests/data/parser/parseUpdate3.out +++ b/tests/data/parser/parseUpdate3.out @@ -1,4 +1,309 @@ -a:4:{s:5:"query";s:36:"UPDATE foo SET bar = WHERE baz = 0 -";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:36:"UPDATE foo SET bar = WHERE baz = 0 -";s:3:"len";i:36;s:4:"last";i:36;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:19:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:6;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"foo";s:5:"value";s:3:"foo";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:7;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:10;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:11;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:14;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"bar";s:5:"value";s:3:"bar";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:15;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:19;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:20;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:22;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:27;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"baz";s:5:"value";s:3:"baz";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:28;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:31;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:32;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:33;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"0";s:5:"value";i:0;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:34;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:35;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:19;s:3:"idx";i:19;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:3:"foo";s:6:"column";N;s:4:"expr";s:3:"foo";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:0:{}s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:3:"baz";}s:10:"isOperator";b:0;s:4:"expr";s:7:"baz = 0";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:17;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:19:"Missing expression.";i:1;r:79;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "UPDATE foo SET bar = WHERE baz = 0\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE foo SET bar = WHERE baz = 0\n", + "len": 36, + "last": 36, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 19, + "idx": 19, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "baz" + ], + "isOperator": false, + "expr": "baz = 0", + "leftOperand": "baz", + "operator": "=", + "rightOperand": "0" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Missing expression.", + { + "@type": "@16" + }, + 0 + ], + [ + "Missing assignment in SET operation.", + { + "@type": "@15" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate4.in b/tests/data/parser/parseUpdate4.in new file mode 100644 index 000000000..892f7278d --- /dev/null +++ b/tests/data/parser/parseUpdate4.in @@ -0,0 +1 @@ +UPDATE Country x, City y set x.Name=x.Name where x.Code=y.CountryCode; \ No newline at end of file diff --git a/tests/data/parser/parseUpdate4.out b/tests/data/parser/parseUpdate4.out new file mode 100644 index 000000000..5b815c718 --- /dev/null +++ b/tests/data/parser/parseUpdate4.out @@ -0,0 +1,454 @@ +{ + "query": "UPDATE Country x, City y set x.Name=x.Name where x.Code=y.CountryCode;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE Country x, City y set x.Name=x.Name where x.Code=y.CountryCode;", + "len": 70, + "last": 70, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 32, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Country", + "value": "Country", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "x", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "City", + "value": "City", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "y", + "value": "y", + "keyword": "y", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "set", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "x", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Name", + "value": "Name", + "keyword": "NAME", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "x", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Name", + "value": "Name", + "keyword": "NAME", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "x", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Code", + "value": "Code", + "keyword": "CODE", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "y", + "value": "y", + "keyword": "y", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@11" + }, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CountryCode", + "value": "CountryCode", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "Country", + "column": null, + "expr": "Country", + "alias": "x", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "City", + "column": null, + "expr": "City", + "alias": "y", + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "x.Name", + "value": "x.Name" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "x", + "Code", + "y", + "CountryCode" + ], + "isOperator": false, + "expr": "x.Code=y.CountryCode", + "leftOperand": "x.Code", + "operator": "=", + "rightOperand": "y.CountryCode" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate5.in b/tests/data/parser/parseUpdate5.in new file mode 100644 index 000000000..182209f3b --- /dev/null +++ b/tests/data/parser/parseUpdate5.in @@ -0,0 +1 @@ +update user u left join user_detail ud on u.id = ud.user_id set ud.ip ='33' where u.id = 1 \ No newline at end of file diff --git a/tests/data/parser/parseUpdate5.out b/tests/data/parser/parseUpdate5.out new file mode 100644 index 000000000..ca0744e9b --- /dev/null +++ b/tests/data/parser/parseUpdate5.out @@ -0,0 +1,600 @@ +{ + "query": "update user u left join user_detail ud on u.id = ud.user_id set ud.ip ='33' where u.id = 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "update user u left join user_detail ud on u.id = ud.user_id set ud.ip ='33' where u.id = 1", + "len": 90, + "last": 90, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 43, + "idx": 43, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "update", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user", + "value": "user", + "keyword": "USER", + "type": { + "@type": "@3" + }, + "flags": 33, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "u", + "value": "u", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user_detail", + "value": "user_detail", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ud", + "value": "ud", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "u", + "value": "u", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ud", + "value": "ud", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "user_id", + "value": "user_id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "set", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ud", + "value": "ud", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ip", + "value": "ip", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'33'", + "value": "33", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "u", + "value": "u", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user", + "column": null, + "expr": "user", + "alias": "u", + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "ud.ip", + "value": "'33'" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "u", + "id" + ], + "isOperator": false, + "expr": "u.id = 1", + "leftOperand": "u.id", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "user_detail", + "column": null, + "expr": "user_detail", + "alias": "ud", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "u", + "id", + "ud", + "user_id" + ], + "isOperator": false, + "expr": "u.id = ud.user_id", + "leftOperand": "u.id", + "operator": "=", + "rightOperand": "ud.user_id" + } + ], + "using": null, + "indexHints": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 41 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate6.in b/tests/data/parser/parseUpdate6.in new file mode 100644 index 000000000..5078bd49f --- /dev/null +++ b/tests/data/parser/parseUpdate6.in @@ -0,0 +1,11 @@ +UPDATE customer_table c + + JOIN + employee_table e + ON c.city_id = e.city_id + JOIN + anyother_table a + ON a.someID = e.someID + +SET c.active = "Yes" +WHERE c.city = "New york"; \ No newline at end of file diff --git a/tests/data/parser/parseUpdate6.out b/tests/data/parser/parseUpdate6.out new file mode 100644 index 000000000..848421297 --- /dev/null +++ b/tests/data/parser/parseUpdate6.out @@ -0,0 +1,849 @@ +{ + "query": "UPDATE customer_table c\n\n JOIN\n employee_table e\n ON c.city_id = e.city_id\n JOIN\n anyother_table a\n ON a.someID = e.someID\n\nSET c.active = \"Yes\"\nWHERE c.city = \"New york\";", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE customer_table c\n\n JOIN\n employee_table e\n ON c.city_id = e.city_id\n JOIN\n anyother_table a\n ON a.someID = e.someID\n\nSET c.active = \"Yes\"\nWHERE c.city = \"New york\";", + "len": 193, + "last": 193, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 63, + "idx": 63, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customer_table", + "value": "customer_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "JOIN", + "value": "JOIN", + "keyword": "JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee_table", + "value": "employee_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "JOIN", + "value": "JOIN", + "keyword": "JOIN", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "anyother_table", + "value": "anyother_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "someID", + "value": "someID", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "someID", + "value": "someID", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "active", + "value": "active", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Yes\"", + "value": "Yes", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city", + "value": "city", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"New york\"", + "value": "New york", + "keyword": null, + "type": { + "@type": "@57" + }, + "flags": 2, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@69" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "customer_table", + "column": null, + "expr": "customer_table", + "alias": "c", + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "c.active", + "value": "\"Yes\"" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "c", + "city", + "New york" + ], + "isOperator": false, + "expr": "c.city = \"New york\"", + "leftOperand": "c.city", + "operator": "=", + "rightOperand": "\"New york\"" + } + ], + "order": null, + "limit": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "JOIN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "employee_table", + "column": null, + "expr": "employee_table", + "alias": "e", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "c", + "city_id", + "e" + ], + "isOperator": false, + "expr": "c.city_id = e.city_id", + "leftOperand": "c.city_id", + "operator": "=", + "rightOperand": "e.city_id" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "JOIN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "anyother_table", + "column": null, + "expr": "anyother_table", + "alias": "a", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "a", + "someID", + "e" + ], + "isOperator": false, + "expr": "a.someID = e.someID", + "leftOperand": "a.someID", + "operator": "=", + "rightOperand": "e.someID" + } + ], + "using": null, + "indexHints": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 60 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdate7.in b/tests/data/parser/parseUpdate7.in new file mode 100644 index 000000000..d9fcbc834 --- /dev/null +++ b/tests/data/parser/parseUpdate7.in @@ -0,0 +1,11 @@ +UPDATE customer_table c + + INNER JOIN + employee_table e + ON c.city_id = e.city_id + LEFT JOIN + anyother_table a + ON a.someID = e.someID + +SET c.active = "Yes" +WHERE c.city = "New york"; \ No newline at end of file diff --git a/tests/data/parser/parseUpdate7.out b/tests/data/parser/parseUpdate7.out new file mode 100644 index 000000000..e2f6df30f --- /dev/null +++ b/tests/data/parser/parseUpdate7.out @@ -0,0 +1,849 @@ +{ + "query": "UPDATE customer_table c\n\n INNER JOIN\n employee_table e\n ON c.city_id = e.city_id\n LEFT JOIN\n anyother_table a\n ON a.someID = e.someID\n\nSET c.active = \"Yes\"\nWHERE c.city = \"New york\";", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE customer_table c\n\n INNER JOIN\n employee_table e\n ON c.city_id = e.city_id\n LEFT JOIN\n anyother_table a\n ON a.someID = e.someID\n\nSET c.active = \"Yes\"\nWHERE c.city = \"New york\";", + "len": 204, + "last": 204, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 63, + "idx": 63, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customer_table", + "value": "customer_table", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee_table", + "value": "employee_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "anyother_table", + "value": "anyother_table", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "someID", + "value": "someID", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "e", + "value": "e", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "someID", + "value": "someID", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "active", + "value": "active", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Yes\"", + "value": "Yes", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 16, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city", + "value": "city", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 2, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"New york\"", + "value": "New york", + "keyword": null, + "type": { + "@type": "@57" + }, + "flags": 2, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@69" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "customer_table", + "column": null, + "expr": "customer_table", + "alias": "c", + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "c.active", + "value": "\"Yes\"" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "c", + "city", + "New york" + ], + "isOperator": false, + "expr": "c.city = \"New york\"", + "leftOperand": "c.city", + "operator": "=", + "rightOperand": "\"New york\"" + } + ], + "order": null, + "limit": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "INNER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "employee_table", + "column": null, + "expr": "employee_table", + "alias": "e", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "c", + "city_id", + "e" + ], + "isOperator": false, + "expr": "c.city_id = e.city_id", + "leftOperand": "c.city_id", + "operator": "=", + "rightOperand": "e.city_id" + } + ], + "using": null, + "indexHints": [] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "anyother_table", + "column": null, + "expr": "anyother_table", + "alias": "a", + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "a", + "someID", + "e" + ], + "isOperator": false, + "expr": "a.someID = e.someID", + "leftOperand": "a.someID", + "operator": "=", + "rightOperand": "e.someID" + } + ], + "using": null, + "indexHints": [] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 60 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdateEmptySet.in b/tests/data/parser/parseUpdateEmptySet.in new file mode 100644 index 000000000..996d765b5 --- /dev/null +++ b/tests/data/parser/parseUpdateEmptySet.in @@ -0,0 +1 @@ +UPDATE test SET WHERE 1; diff --git a/tests/data/parser/parseUpdateEmptySet.out b/tests/data/parser/parseUpdateEmptySet.out new file mode 100644 index 000000000..5026a1a4b --- /dev/null +++ b/tests/data/parser/parseUpdateEmptySet.out @@ -0,0 +1,221 @@ +{ + "query": "UPDATE test SET WHERE 1;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "UPDATE test SET WHERE 1;\n", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 12, + "idx": 12, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@3" + }, + "flags": 11, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "1", + "leftOperand": "1", + "operator": "", + "rightOperand": "" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Missing assignment in SET operation.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseUpdateErr.out b/tests/data/parser/parseUpdateErr.out index af8b028bc..d336f95bd 100644 --- a/tests/data/parser/parseUpdateErr.out +++ b/tests/data/parser/parseUpdateErr.out @@ -1,19 +1,425 @@ -a:4:{s:5:"query";s:87:"-- extraneous comma -UPDATE - users -SET - username = "Dan", - id=155, -WHERE 1 = 1;";s:5:"lexer";O:26:"PhpMyAdmin\SqlParser\Lexer":8:{s:3:"str";s:87:"-- extraneous comma -UPDATE - users -SET - username = "Dan", - id=155, -WHERE 1 = 1;";s:3:"len";i:87;s:4:"last";i:87;s:4:"list";O:31:"PhpMyAdmin\SqlParser\TokensList":3:{s:6:"tokens";a:29:{i:0;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:19:"-- extraneous comma";s:5:"value";s:19:"-- extraneous comma";s:7:"keyword";N;s:4:"type";i:4;s:5:"flags";i:4;s:8:"position";i:0;}i:1;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:19;}i:2;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:7:"keyword";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:20;}i:3;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:26;}i:4;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"users";s:5:"value";s:5:"users";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:31;}i:5;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:36;}i:6;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:7:"keyword";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:37;}i:7;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:40;}i:8;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:8:"username";s:5:"value";s:8:"username";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:45;}i:9;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:10;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:54;}i:11;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:55;}i:12;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:""Dan"";s:5:"value";s:3:"Dan";s:7:"keyword";N;s:4:"type";i:7;s:5:"flags";i:2;s:8:"position";i:56;}i:13;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:61;}i:14;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:" - ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:62;}i:15;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:2:"id";s:5:"value";s:2:"id";s:7:"keyword";N;s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:67;}i:16;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:69;}i:17;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:3:"155";s:5:"value";i:155;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:70;}i:18;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:",";s:5:"value";s:1:",";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:73;}i:19;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" -";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:20;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:7:"keyword";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:75;}i:21;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:80;}i:22;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:81;}i:23;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:82;}i:24;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:7:"keyword";N;s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:83;}i:25;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:7:"keyword";N;s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:84;}i:26;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:"1";s:5:"value";i:1;s:7:"keyword";N;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:85;}i:27;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:86;}i:28;O:26:"PhpMyAdmin\SqlParser\Token":6:{s:5:"token";N;s:5:"value";N;s:7:"keyword";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:29;s:3:"idx";i:29;}s:9:"delimiter";s:1:";";s:12:"delimiterLen";i:1;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"parser";O:27:"PhpMyAdmin\SqlParser\Parser":5:{s:4:"list";r:7;s:10:"statements";a:1:{i:0;O:47:"PhpMyAdmin\SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:42:"PhpMyAdmin\SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:5:"users";s:6:"column";N;s:4:"expr";s:5:"users";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:2:{i:0;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:8:"username";s:5:"value";s:5:""Dan"";}i:1;O:44:"PhpMyAdmin\SqlParser\Components\SetOperation":2:{s:6:"column";s:2:"id";s:5:"value";s:3:"155";}}s:5:"where";a:1:{i:0;O:41:"PhpMyAdmin\SqlParser\Components\Condition":3:{s:11:"identifiers";a:0:{}s:10:"isOperator";b:0;s:4:"expr";s:5:"1 = 1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:44:"PhpMyAdmin\SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:0;s:4:"last";i:26;}}s:8:"brackets";i:0;s:6:"strict";b:0;s:6:"errors";a:0:{}}s:6:"errors";a:2:{s:5:"lexer";a:0:{}s:6:"parser";a:1:{i:0;a:3:{i:0;s:17:"Unexpected token.";i:1;r:135;i:2;i:0;}}}} \ No newline at end of file +{ + "query": "-- extraneous comma\nUPDATE\n users\nSET\n username = \"Dan\",\n id=155,\nWHERE 1 = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "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", + "count": 29, + "idx": 29, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- extraneous comma", + "value": "-- extraneous comma", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@7" + }, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@7" + }, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 2, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@37" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "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", + "identifiers": [], + "isOperator": false, + "expr": "1 = 1", + "leftOperand": "1", + "operator": "=", + "rightOperand": "1" + } + ], + "order": null, + "limit": null, + "join": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@27" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWhere0.in b/tests/data/parser/parseWhere0.in new file mode 100644 index 000000000..e089e23d0 --- /dev/null +++ b/tests/data/parser/parseWhere0.in @@ -0,0 +1 @@ +DELETE FROM t where 0 AND 0 \ No newline at end of file diff --git a/tests/data/parser/parseWhere0.out b/tests/data/parser/parseWhere0.out new file mode 100644 index 000000000..2bdd08862 --- /dev/null +++ b/tests/data/parser/parseWhere0.out @@ -0,0 +1,255 @@ +{ + "query": "DELETE FROM t where 0 AND 0", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "DELETE FROM t where 0 AND 0", + "len": 27, + "last": 27, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 14, + "idx": 14, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "@14" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "t", + "column": null, + "expr": "t", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "0", + "leftOperand": "0", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": true, + "expr": "AND", + "leftOperand": "", + "operator": "", + "rightOperand": "" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [], + "isOperator": false, + "expr": "0", + "leftOperand": "0", + "operator": "", + "rightOperand": "" + } + ], + "order": null, + "limit": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 12 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement.in b/tests/data/parser/parseWithStatement.in new file mode 100644 index 000000000..9e1537b9f --- /dev/null +++ b/tests/data/parser/parseWithStatement.in @@ -0,0 +1 @@ +INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement.out b/tests/data/parser/parseWithStatement.out new file mode 100644 index 000000000..e577c672f --- /dev/null +++ b/tests/data/parser/parseWithStatement.out @@ -0,0 +1,730 @@ +{ + "query": "INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "len": 94, + "last": 94, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 38, + "idx": 38, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement1.in b/tests/data/parser/parseWithStatement1.in new file mode 100644 index 000000000..126dc6661 --- /dev/null +++ b/tests/data/parser/parseWithStatement1.in @@ -0,0 +1 @@ +CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement1.out b/tests/data/parser/parseWithStatement1.out new file mode 100644 index 000000000..22760aa03 --- /dev/null +++ b/tests/data/parser/parseWithStatement1.out @@ -0,0 +1,732 @@ +{ + "query": "CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "len": 95, + "last": 95, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 38, + "idx": 38, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement2.in b/tests/data/parser/parseWithStatement2.in new file mode 100644 index 000000000..66792dece --- /dev/null +++ b/tests/data/parser/parseWithStatement2.in @@ -0,0 +1 @@ +INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3 \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement2.out b/tests/data/parser/parseWithStatement2.out new file mode 100644 index 000000000..9007b0a73 --- /dev/null +++ b/tests/data/parser/parseWithStatement2.out @@ -0,0 +1,767 @@ +{ + "query": "INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3", + "len": 112, + "last": 112, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 46, + "idx": 46, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col_name", + "value": "col_name", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 5, + "idx": 5, + "tokens": [ + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@28" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 4 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "onDuplicateSet": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "col_name", + "value": "3" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 44 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement3.in b/tests/data/parser/parseWithStatement3.in new file mode 100644 index 000000000..1d74ea8cc --- /dev/null +++ b/tests/data/parser/parseWithStatement3.in @@ -0,0 +1 @@ +WITH categories(identifier, name, parent_id) AS ( SELECT c.identifier, c.name, c.parent_id FROM category c WHERE c.identifier = 'a' UNION ALL SELECT c.identifier, c.name, c.parent_id FROM categories, category c WHERE c.identifier = categories.parent_id ), foo AS ( SELECT * FROM test ) SELECT * FROM categories \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement3.out b/tests/data/parser/parseWithStatement3.out new file mode 100644 index 000000000..d2bb7c7db --- /dev/null +++ b/tests/data/parser/parseWithStatement3.out @@ -0,0 +1,1926 @@ +{ + "query": "WITH categories(identifier, name, parent_id) AS ( SELECT c.identifier, c.name, c.parent_id FROM category c WHERE c.identifier = 'a' UNION ALL SELECT c.identifier, c.name, c.parent_id FROM categories, category c WHERE c.identifier = categories.parent_id ), foo AS ( SELECT * FROM test ) SELECT * FROM categories", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "WITH categories(identifier, name, parent_id) AS ( SELECT c.identifier, c.name, c.parent_id FROM category c WHERE c.identifier = 'a' UNION ALL SELECT c.identifier, c.name, c.parent_id FROM categories, category c WHERE c.identifier = categories.parent_id ), foo AS ( SELECT * FROM test ) SELECT * FROM categories", + "len": 310, + "last": 310, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 115, + "idx": 115, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "categories", + "value": "categories", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "identifier", + "value": "identifier", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "parent_id", + "value": "parent_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "identifier", + "value": "identifier", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "parent_id", + "value": "parent_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "category", + "value": "category", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "identifier", + "value": "identifier", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'a'", + "value": "a", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 1, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "identifier", + "value": "identifier", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "parent_id", + "value": "parent_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "categories", + "value": "categories", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "category", + "value": "category", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "identifier", + "value": "identifier", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 2, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "categories", + "value": "categories", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "parent_id", + "value": "parent_id", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 16, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "categories", + "value": "categories", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "categories": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "identifier", + "name", + "parent_id" + ], + "values": [ + "identifier", + "name", + "parent_id" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 72, + "idx": 72, + "tokens": [ + { + "@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": "@55" + }, + { + "@type": "@56" + }, + { + "@type": "@57" + }, + { + "@type": "@58" + }, + { + "@type": "@59" + }, + { + "@type": "@60" + }, + { + "@type": "@61" + }, + { + "@type": "@62" + }, + { + "@type": "@63" + }, + { + "@type": "@64" + }, + { + "@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" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "c", + "column": "identifier", + "expr": "c.identifier", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "c", + "column": "name", + "expr": "c.name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "c", + "column": "parent_id", + "expr": "c.parent_id", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "category", + "column": null, + "expr": "category", + "alias": "c", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "c", + "identifier", + "a" + ], + "isOperator": false, + "expr": "c.identifier = 'a'", + "leftOperand": "c.identifier", + "operator": "=", + "rightOperand": "'a'" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "c", + "column": "identifier", + "expr": "c.identifier", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "c", + "column": "name", + "expr": "c.name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "c", + "column": "parent_id", + "expr": "c.parent_id", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "categories", + "column": null, + "expr": "categories", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "category", + "column": null, + "expr": "category", + "alias": "c", + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "c", + "identifier", + "categories", + "parent_id" + ], + "isOperator": false, + "expr": "c.identifier = categories.parent_id", + "leftOperand": "c.identifier", + "operator": "=", + "rightOperand": "categories.parent_id" + } + ], + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 33, + "last": 71 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 71 + } + ], + "brackets": 0 + }, + "name": "categories" + }, + "foo": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 9, + "idx": 9, + "tokens": [ + { + "@type": "@103" + }, + { + "@type": "@104" + }, + { + "@type": "@105" + }, + { + "@type": "@106" + }, + { + "@type": "@107" + }, + { + "@type": "@108" + }, + { + "@type": "@109" + }, + { + "@type": "@110" + }, + { + "@type": "@111" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0 + }, + "name": "foo" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "@114" + }, + { + "@type": "@115" + }, + { + "@type": "@116" + }, + { + "@type": "@117" + }, + { + "@type": "@118" + }, + { + "@type": "@119" + }, + { + "@type": "@120" + }, + { + "@type": "@121" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "categories", + "column": null, + "expr": "categories", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 113 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement4.in b/tests/data/parser/parseWithStatement4.in new file mode 100644 index 000000000..54311c8f2 --- /dev/null +++ b/tests/data/parser/parseWithStatement4.in @@ -0,0 +1 @@ +CREATE table table_name AS WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement4.out b/tests/data/parser/parseWithStatement4.out new file mode 100644 index 000000000..37fb4f5c7 --- /dev/null +++ b/tests/data/parser/parseWithStatement4.out @@ -0,0 +1,626 @@ +{ + "query": "CREATE table table_name AS WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE table table_name AS WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO", + "len": 80, + "last": 80, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 34, + "idx": 35, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@29" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@18" + }, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO", + "value": "NO", + "keyword": "NO", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 31 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@39" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@39" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@39" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement5.in b/tests/data/parser/parseWithStatement5.in new file mode 100644 index 000000000..3ad595885 --- /dev/null +++ b/tests/data/parser/parseWithStatement5.in @@ -0,0 +1 @@ +CREATE view view_name AS WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement5.out b/tests/data/parser/parseWithStatement5.out new file mode 100644 index 000000000..f084a4e55 --- /dev/null +++ b/tests/data/parser/parseWithStatement5.out @@ -0,0 +1,747 @@ +{ + "query": "CREATE view view_name AS WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE view view_name AS WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "len": 95, + "last": 95, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 39, + "idx": 39, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "view", + "value": "view", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "view_name", + "value": "view_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aa", + "value": "aa", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "view_name", + "column": null, + "expr": "view_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "aa": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "aa" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 8, + "idx": 8, + "tokens": [ + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + }, + { + "@type": "@45" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@44" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "view" + } + }, + "first": 0, + "last": 38 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement6.in b/tests/data/parser/parseWithStatement6.in new file mode 100644 index 000000000..9bbc2d940 --- /dev/null +++ b/tests/data/parser/parseWithStatement6.in @@ -0,0 +1 @@ +CREATE view view_name WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement6.out b/tests/data/parser/parseWithStatement6.out new file mode 100644 index 000000000..533ca306a --- /dev/null +++ b/tests/data/parser/parseWithStatement6.out @@ -0,0 +1,577 @@ +{ + "query": "CREATE view view_name WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE view view_name WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "len": 92, + "last": 92, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 37, + "idx": 37, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "view", + "value": "view", + "keyword": "VIEW", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "view_name", + "value": "view_name", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aa", + "value": "aa", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@15" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@9" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "view_name", + "column": null, + "expr": "view_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@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" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "view" + } + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement7.in b/tests/data/parser/parseWithStatement7.in new file mode 100644 index 000000000..ed1eb3163 --- /dev/null +++ b/tests/data/parser/parseWithStatement7.in @@ -0,0 +1 @@ +WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT * FROM cte INNER JOIN table2 ON table2.col1=cte.col1; \ No newline at end of file diff --git a/tests/data/parser/parseWithStatement7.out b/tests/data/parser/parseWithStatement7.out new file mode 100644 index 000000000..82fab5bea --- /dev/null +++ b/tests/data/parser/parseWithStatement7.out @@ -0,0 +1,874 @@ +{ + "query": "WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT * FROM cte INNER JOIN table2 ON table2.col1=cte.col1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT * FROM cte INNER JOIN table2 ON table2.col1=cte.col1;", + "len": 111, + "last": 111, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 47, + "idx": 47, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@53" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 23, + "idx": 23, + "tokens": [ + { + "@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": "@54" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "type": "INNER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "identifiers": [ + "table2", + "col1", + "cte" + ], + "isOperator": false, + "expr": "table2.col1=cte.col1", + "leftOperand": "table2.col1", + "operator": "=", + "rightOperand": "cte.col1" + } + ], + "using": null, + "indexHints": [] + } + ], + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 45 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr.in b/tests/data/parser/parseWithStatementErr.in new file mode 100644 index 000000000..2f320c506 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr.in @@ -0,0 +1 @@ +INSERT INTO table_name WITH cte col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr.out b/tests/data/parser/parseWithStatementErr.out new file mode 100644 index 000000000..56a3fa299 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr.out @@ -0,0 +1,540 @@ +{ + "query": "INSERT INTO table_name WITH cte col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO table_name WITH cte col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "len": 93, + "last": 93, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 37, + "idx": 38, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@26" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@17" + }, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [], + "statement": null, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@19" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr1.in b/tests/data/parser/parseWithStatementErr1.in new file mode 100644 index 000000000..37d694818 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr1.in @@ -0,0 +1 @@ +CREATE table table_name WITH cte (col1) ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr1.out b/tests/data/parser/parseWithStatementErr1.out new file mode 100644 index 000000000..bdad09ff8 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr1.out @@ -0,0 +1,647 @@ +{ + "query": "CREATE table table_name WITH cte (col1) ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE table table_name WITH cte (col1) ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte", + "len": 92, + "last": 92, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 36, + "idx": 36, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": null, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 20, + "last": 27 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 14, + "last": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 28, + "last": 34 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "AS keyword was expected.", + { + "@type": "@20" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@20" + }, + 0 + ], + [ + "This type of clause was previously parsed.", + { + "@type": "@35" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr2.in b/tests/data/parser/parseWithStatementErr2.in new file mode 100644 index 000000000..3a41c5bf1 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr2.in @@ -0,0 +1 @@ +WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr2.out b/tests/data/parser/parseWithStatementErr2.out new file mode 100644 index 000000000..cb16b2d0d --- /dev/null +++ b/tests/data/parser/parseWithStatementErr2.out @@ -0,0 +1,475 @@ +{ + "query": "WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 )", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 )", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 24, + "idx": 24, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@30" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@30" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr3.in b/tests/data/parser/parseWithStatementErr3.in new file mode 100644 index 000000000..ca9e00923 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr3.in @@ -0,0 +1 @@ +CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ), \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr3.out b/tests/data/parser/parseWithStatementErr3.out new file mode 100644 index 000000000..b7437a354 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr3.out @@ -0,0 +1,586 @@ +{ + "query": "CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ),", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ),", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 31, + "idx": 31, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The name of the CTE was expected.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@37" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr4.in b/tests/data/parser/parseWithStatementErr4.in new file mode 100644 index 000000000..582cfaf0b --- /dev/null +++ b/tests/data/parser/parseWithStatementErr4.in @@ -0,0 +1 @@ +CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr4.out b/tests/data/parser/parseWithStatementErr4.out new file mode 100644 index 000000000..8da216c6c --- /dev/null +++ b/tests/data/parser/parseWithStatementErr4.out @@ -0,0 +1,604 @@ +{ + "query": "CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO", + "len": 77, + "last": 77, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 33, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@27" + }, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO", + "value": "NO", + "keyword": "NO", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@37" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr5.in b/tests/data/parser/parseWithStatementErr5.in new file mode 100644 index 000000000..a9bf5e9a3 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr5.in @@ -0,0 +1 @@ +CREATE table table_name WITH (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr5.out b/tests/data/parser/parseWithStatementErr5.out new file mode 100644 index 000000000..7eec23fdb --- /dev/null +++ b/tests/data/parser/parseWithStatementErr5.out @@ -0,0 +1,451 @@ +{ + "query": "CREATE table table_name WITH (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "CREATE table table_name WITH (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO", + "len": 73, + "last": 73, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 30, + "idx": 31, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO", + "value": "NO", + "keyword": "NO", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": [], + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 1 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The name of the CTE was expected.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@14" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@18" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr6.in b/tests/data/parser/parseWithStatementErr6.in new file mode 100644 index 000000000..68e92b134 --- /dev/null +++ b/tests/data/parser/parseWithStatementErr6.in @@ -0,0 +1 @@ +INSERT INTO table_name WITH cte (col1) AS ( INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3 \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr6.out b/tests/data/parser/parseWithStatementErr6.out new file mode 100644 index 000000000..fdcea525e --- /dev/null +++ b/tests/data/parser/parseWithStatementErr6.out @@ -0,0 +1,1010 @@ +{ + "query": "INSERT INTO table_name WITH cte (col1) AS ( INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "INSERT INTO table_name WITH cte (col1) AS ( INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3", + "len": 186, + "last": 186, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 70, + "idx": 71, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "column1", + "value": "column1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "column2", + "value": "column2", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "column3", + "value": "column3", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@3" + }, + "flags": 35, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value1", + "value": "value1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value2", + "value": "value2", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value3", + "value": "value3", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 16, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": { + "@type": "@3" + }, + "flags": 1, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@3" + }, + "flags": 19, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col_name", + "value": "col_name", + "keyword": null, + "type": { + "@type": "@13" + }, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@16" + }, + "flags": 2, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": null, + "set": null, + "select": null, + "with": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": null, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": null, + "last": null + }, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "table_name", + "column": null, + "expr": "table_name", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "column1", + "column2", + "column3" + ], + "values": null, + "fieldsOptions": null, + "fieldsKeyword": null, + "linesOptions": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "value1", + "value2", + "value3" + ], + "values": [ + "value1", + "value2", + "value3" + ] + } + ], + "set": null, + "select": null, + "with": null, + "onDuplicateSet": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 16, + "last": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 46, + "last": 55 + } + ], + "brackets": 1 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Subquery of the CTE was expected.", + { + "@type": "@22" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@22" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@22" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@52" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@62" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr7.in b/tests/data/parser/parseWithStatementErr7.in new file mode 100644 index 000000000..00ee71c2a --- /dev/null +++ b/tests/data/parser/parseWithStatementErr7.in @@ -0,0 +1 @@ +WITH cte (col1) AS ( SELECT 1 UNN ALL SELECT 2 ) SELECT col1 FROM cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr7.out b/tests/data/parser/parseWithStatementErr7.out new file mode 100644 index 000000000..bb5acb97e --- /dev/null +++ b/tests/data/parser/parseWithStatementErr7.out @@ -0,0 +1,517 @@ +{ + "query": "WITH cte (col1) AS ( SELECT 1 UNN ALL SELECT 2 ) SELECT col1 FROM cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "WITH cte (col1) AS ( SELECT 1 UNN ALL SELECT 2 ) SELECT col1 FROM cte", + "len": 69, + "last": 69, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 34, + "idx": 34, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNN", + "value": "UNN", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALL", + "value": "ALL", + "keyword": "ALL", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": null, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "cte", + "column": null, + "expr": "cte", + "alias": null, + "function": null, + "subquery": null + } + ], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 24, + "last": 32 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized keyword.", + { + "@type": "@25" + }, + 0 + ], + [ + "This type of clause was previously parsed.", + { + "@type": "@27" + }, + 0 + ], + [ + "Unexpected end of the WITH CTE.", + { + "@type": "@31" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr8.in b/tests/data/parser/parseWithStatementErr8.in new file mode 100644 index 000000000..fbc5b99af --- /dev/null +++ b/tests/data/parser/parseWithStatementErr8.in @@ -0,0 +1 @@ +WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FR cte \ No newline at end of file diff --git a/tests/data/parser/parseWithStatementErr8.out b/tests/data/parser/parseWithStatementErr8.out new file mode 100644 index 000000000..147b07e3a --- /dev/null +++ b/tests/data/parser/parseWithStatementErr8.out @@ -0,0 +1,612 @@ +{ + "query": "WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FR cte", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": "WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FR cte", + "len": 69, + "last": 69, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 32, + "idx": 32, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION ALL", + "value": "UNION ALL", + "keyword": "UNION ALL", + "type": { + "@type": "@3" + }, + "flags": 7, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": { + "@type": "@21" + }, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@10" + }, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": { + "@type": "@3" + }, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FR", + "value": "FR", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@5" + }, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": { + "@type": "@7" + }, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "withers": { + "cte": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\WithKeyword", + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "col1" + ], + "values": [ + "col1" + ] + } + ], + "statement": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 11, + "idx": 11, + "tokens": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + } + ] + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION ALL", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 10 + } + ] + ], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0 + }, + "name": "cte" + } + }, + "cteStatementParser": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "col1", + "expr": "col1", + "alias": "FR", + "function": null, + "subquery": null + } + ], + "from": [], + "indexHints": null, + "partition": null, + "where": null, + "group": null, + "groupOptions": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "endOptions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 24, + "last": 30 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@37" + }, + 0 + ], + [ + "An alias was previously found.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@37" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/tests/data/parser/parsephpMyAdminExport1.in b/tests/data/parser/parsephpMyAdminExport1.in new file mode 100644 index 000000000..61fd9e40f --- /dev/null +++ b/tests/data/parser/parsephpMyAdminExport1.in @@ -0,0 +1,87 @@ +-- phpMyAdmin SQL Dump +-- version 5.0.0-dev +-- https://www.phpmyadmin.net/ +-- +-- Hôte : xxxx.xxxxx.eu-west-1.rds.amazonaws.com +-- Généré le : mer. 05 sep. 2018 à 00:03 +-- Version du serveur : 10.0.24-MariaDB +-- Version de PHP : 7.2.8-1+ubuntu18.04.1+deb.sury.org+1 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!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 */; + +-- +-- Base de données : `xxxxxdbnamexxxxx` +-- + +-- -------------------------------------------------------- + +-- +-- Structure de la table `monitoring__times` +-- + +CREATE TABLE `monitoring__times` ( + `idServer` int(11) UNSIGNED NOT NULL COMMENT 'Id of server', + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Time UTC', + `totalTime` float UNSIGNED NOT NULL COMMENT 'Total time in ms' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +-- +-- Déclencheurs `monitoring__times` +-- +DELIMITER $$ +CREATE TRIGGER `copyTimes` AFTER INSERT ON `monitoring__times` FOR EACH ROW INSERT INTO monitoring__times_mirror +(`idServer`, `time`, `totalTime`) VALUES(new.idServer, new.time, new.totalTime) +$$ +DELIMITER ; +DELIMITER $$ +CREATE TRIGGER `deleteTimes` AFTER DELETE ON `monitoring__times` FOR EACH ROW DELETE FROM monitoring__times_mirror +WHERE `idServer`=old.idServer +AND `time`=old.time +AND `totalTime`=old.totalTime +$$ +DELIMITER ; +DELIMITER $$ +CREATE TRIGGER `updateTimes` AFTER UPDATE ON `monitoring__times` FOR EACH ROW UPDATE monitoring__times_mirror +SET `idServer`=new.idServer, +`time`=new.time, +`totalTime`=new.totalTime +WHERE `idServer`=old.idServer +AND `time`=old.time +AND `totalTime`=old.totalTime +$$ +DELIMITER ; + +-- +-- Index pour les tables déchargées +-- + +-- +-- Index pour la table `monitoring__times` +-- +ALTER TABLE `monitoring__times` + ADD UNIQUE KEY `idServer` (`idServer`,`time`) USING BTREE COMMENT 'Unique idServer/time', + ADD KEY `INDEX_totalTime` (`totalTime`) USING BTREE COMMENT 'Index for totalTime column'; + +-- +-- Contraintes pour les tables déchargées +-- + +-- +-- Contraintes pour la table `monitoring__times` +-- +ALTER TABLE `monitoring__times` + ADD CONSTRAINT `monitoring__times__idServer` FOREIGN KEY (`idServer`) REFERENCES `monitoring__servers` (`id`); +COMMIT; + +/*!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/tests/data/parser/parsephpMyAdminExport1.out b/tests/data/parser/parsephpMyAdminExport1.out new file mode 100644 index 000000000..f07048929 --- /dev/null +++ b/tests/data/parser/parsephpMyAdminExport1.out @@ -0,0 +1,6705 @@ +{ + "query": "-- phpMyAdmin SQL Dump\n-- version 5.0.0-dev\n-- https://www.phpmyadmin.net/\n--\n-- Hôte : xxxx.xxxxx.eu-west-1.rds.amazonaws.com\n-- Généré le : mer. 05 sep. 2018 à 00:03\n-- Version du serveur : 10.0.24-MariaDB\n-- Version de PHP : 7.2.8-1+ubuntu18.04.1+deb.sury.org+1\n\nSET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\nSET AUTOCOMMIT = 0;\nSTART TRANSACTION;\nSET time_zone = \"+00:00\";\n\n\n/*!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--\n-- Base de données : `xxxxxdbnamexxxxx`\n--\n\n-- --------------------------------------------------------\n\n--\n-- Structure de la table `monitoring__times`\n--\n\nCREATE TABLE `monitoring__times` (\n `idServer` int(11) UNSIGNED NOT NULL COMMENT 'Id of server',\n `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Time UTC',\n `totalTime` float UNSIGNED NOT NULL COMMENT 'Total time in ms'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n\n--\n-- Déclencheurs `monitoring__times`\n--\nDELIMITER $$\nCREATE TRIGGER `copyTimes` AFTER INSERT ON `monitoring__times` FOR EACH ROW INSERT INTO monitoring__times_mirror\n(`idServer`, `time`, `totalTime`) VALUES(new.idServer, new.time, new.totalTime)\n$$\nDELIMITER ;\nDELIMITER $$\nCREATE TRIGGER `deleteTimes` AFTER DELETE ON `monitoring__times` FOR EACH ROW DELETE FROM monitoring__times_mirror\nWHERE `idServer`=old.idServer\nAND `time`=old.time\nAND `totalTime`=old.totalTime\n$$\nDELIMITER ;\nDELIMITER $$\nCREATE TRIGGER `updateTimes` AFTER UPDATE ON `monitoring__times` FOR EACH ROW UPDATE monitoring__times_mirror\nSET `idServer`=new.idServer,\n`time`=new.time,\n`totalTime`=new.totalTime\nWHERE `idServer`=old.idServer\nAND `time`=old.time\nAND `totalTime`=old.totalTime\n$$\nDELIMITER ;\n\n--\n-- Index pour les tables déchargées\n--\n\n--\n-- Index pour la table `monitoring__times`\n--\nALTER TABLE `monitoring__times`\n ADD UNIQUE KEY `idServer` (`idServer`,`time`) USING BTREE COMMENT 'Unique idServer/time',\n ADD KEY `INDEX_totalTime` (`totalTime`) USING BTREE COMMENT 'Index for totalTime column';\n\n--\n-- Contraintes pour les tables déchargées\n--\n\n--\n-- Contraintes pour la table `monitoring__times`\n--\nALTER TABLE `monitoring__times`\n ADD CONSTRAINT `monitoring__times__idServer` FOREIGN KEY (`idServer`) REFERENCES `monitoring__servers` (`id`);\nCOMMIT;\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 */;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "strict": false, + "errors": [], + "str": { + "@type": "PhpMyAdmin\\SqlParser\\UtfString", + "str": "-- phpMyAdmin SQL Dump\n-- version 5.0.0-dev\n-- https://www.phpmyadmin.net/\n--\n-- Hôte : xxxx.xxxxx.eu-west-1.rds.amazonaws.com\n-- Généré le : mer. 05 sep. 2018 à 00:03\n-- Version du serveur : 10.0.24-MariaDB\n-- Version de PHP : 7.2.8-1+ubuntu18.04.1+deb.sury.org+1\n\nSET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\nSET AUTOCOMMIT = 0;\nSTART TRANSACTION;\nSET time_zone = \"+00:00\";\n\n\n/*!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--\n-- Base de données : `xxxxxdbnamexxxxx`\n--\n\n-- --------------------------------------------------------\n\n--\n-- Structure de la table `monitoring__times`\n--\n\nCREATE TABLE `monitoring__times` (\n `idServer` int(11) UNSIGNED NOT NULL COMMENT 'Id of server',\n `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Time UTC',\n `totalTime` float UNSIGNED NOT NULL COMMENT 'Total time in ms'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n\n--\n-- Déclencheurs `monitoring__times`\n--\nDELIMITER $$\nCREATE TRIGGER `copyTimes` AFTER INSERT ON `monitoring__times` FOR EACH ROW INSERT INTO monitoring__times_mirror\n(`idServer`, `time`, `totalTime`) VALUES(new.idServer, new.time, new.totalTime)\n$$\nDELIMITER ;\nDELIMITER $$\nCREATE TRIGGER `deleteTimes` AFTER DELETE ON `monitoring__times` FOR EACH ROW DELETE FROM monitoring__times_mirror\nWHERE `idServer`=old.idServer\nAND `time`=old.time\nAND `totalTime`=old.totalTime\n$$\nDELIMITER ;\nDELIMITER $$\nCREATE TRIGGER `updateTimes` AFTER UPDATE ON `monitoring__times` FOR EACH ROW UPDATE monitoring__times_mirror\nSET `idServer`=new.idServer,\n`time`=new.time,\n`totalTime`=new.totalTime\nWHERE `idServer`=old.idServer\nAND `time`=old.time\nAND `totalTime`=old.totalTime\n$$\nDELIMITER ;\n\n--\n-- Index pour les tables déchargées\n--\n\n--\n-- Index pour la table `monitoring__times`\n--\nALTER TABLE `monitoring__times`\n ADD UNIQUE KEY `idServer` (`idServer`,`time`) USING BTREE COMMENT 'Unique idServer/time',\n ADD KEY `INDEX_totalTime` (`totalTime`) USING BTREE COMMENT 'Index for totalTime column';\n\n--\n-- Contraintes pour les tables déchargées\n--\n\n--\n-- Contraintes pour la table `monitoring__times`\n--\nALTER TABLE `monitoring__times`\n ADD CONSTRAINT `monitoring__times__idServer` FOREIGN KEY (`idServer`) REFERENCES `monitoring__servers` (`id`);\nCOMMIT;\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 */;\n" + }, + "len": 2635, + "last": 2635, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "count": 505, + "idx": 505, + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- phpMyAdmin SQL Dump", + "value": "-- phpMyAdmin SQL Dump", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Comment", + "value": 4 + }, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Whitespace", + "value": 3 + }, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- version 5.0.0-dev", + "value": "-- version 5.0.0-dev", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- https://www.phpmyadmin.net/", + "value": "-- https://www.phpmyadmin.net/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Hôte : xxxx.xxxxx.eu-west-1.rds.amazonaws.com", + "value": "-- Hôte : xxxx.xxxxx.eu-west-1.rds.amazonaws.com", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Généré le : mer. 05 sep. 2018 à 00:03", + "value": "-- Généré le : mer. 05 sep. 2018 à 00:03", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Version du serveur : 10.0.24-MariaDB", + "value": "-- Version du serveur : 10.0.24-MariaDB", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Version de PHP : 7.2.8-1+ubuntu18.04.1+deb.sury.org+1", + "value": "-- Version de PHP : 7.2.8-1+ubuntu18.04.1+deb.sury.org+1", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Keyword", + "value": 1 + }, + "flags": 11, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL_MODE", + "value": "SQL_MODE", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "None", + "value": 0 + }, + "flags": 0, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Operator", + "value": 2 + }, + "flags": 2, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"NO_AUTO_VALUE_ON_ZERO\"", + "value": "NO_AUTO_VALUE_ON_ZERO", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "String", + "value": 7 + }, + "flags": 2, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Delimiter", + "value": 9 + }, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTOCOMMIT", + "value": "AUTOCOMMIT", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Number", + "value": 6 + }, + "flags": 0, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time_zone", + "value": "time_zone", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"+00:00\"", + "value": "+00:00", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 2, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!40101", + "value": "/*!40101", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 10, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@OLD_CHARACTER_SET_CLIENT", + "value": "OLD_CHARACTER_SET_CLIENT", + "keyword": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\TokenType", + "name": "Symbol", + "value": 8 + }, + "flags": 1, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@@CHARACTER_SET_CLIENT", + "value": "CHARACTER_SET_CLIENT", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 9, + "position": 415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 2, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!40101", + "value": "/*!40101", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 10, + "position": 442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@OLD_CHARACTER_SET_RESULTS", + "value": "OLD_CHARACTER_SET_RESULTS", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 1, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@@CHARACTER_SET_RESULTS", + "value": "CHARACTER_SET_RESULTS", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 9, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 2, + "position": 506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!40101", + "value": "/*!40101", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 10, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@OLD_COLLATION_CONNECTION", + "value": "OLD_COLLATION_CONNECTION", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 1, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@@COLLATION_CONNECTION", + "value": "COLLATION_CONNECTION", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 9, + "position": 549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 2, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 574 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 575 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!40101", + "value": "/*!40101", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 10, + "position": 576 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 585 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 594 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 595 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 2, + "position": 603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Base de données : `xxxxxdbnamexxxxx`", + "value": "-- Base de données : `xxxxxdbnamexxxxx`", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 652 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 654 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- --------------------------------------------------------", + "value": "-- --------------------------------------------------------", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Structure de la table `monitoring__times`", + "value": "-- Structure de la table `monitoring__times`", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 769 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 776 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__times`", + "value": "monitoring__times", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 801 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 816 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": { + "@type": "@42" + }, + "flags": 0, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 824 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 825 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 834 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Id of server'", + "value": "Id of server", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`time`", + "value": "time", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 869 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "timestamp", + "value": "timestamp", + "keyword": "TIMESTAMP", + "type": { + "@type": "@22" + }, + "flags": 41, + "position": 876 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 886 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": { + "@type": "@22" + }, + "flags": 35, + "position": 895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@22" + }, + "flags": 35, + "position": 903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 921 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 930 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": { + "@type": "@22" + }, + "flags": 35, + "position": 931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 956 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Time UTC'", + "value": "Time UTC", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 957 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 967 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`totalTime`", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 982 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "float", + "value": "FLOAT", + "keyword": "FLOAT", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 983 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 989 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1006 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1007 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1014 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Total time in ms'", + "value": "Total time in ms", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 1015 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1033 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1036 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1042 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1043 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1049 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 1050 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1065 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1070 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1071 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1078 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8_unicode_ci", + "value": "utf8_unicode_ci", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1079 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1094 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1099 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Déclencheurs `monitoring__times`", + "value": "-- Déclencheurs `monitoring__times`", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TRIGGER", + "value": "TRIGGER", + "keyword": "TRIGGER", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`copyTimes`", + "value": "copyTimes", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@22" + }, + "flags": 35, + "position": 1185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__times`", + "value": "monitoring__times", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR EACH ROW", + "value": "FOR EACH ROW", + "keyword": "FOR EACH ROW", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 1215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": { + "@type": "@22" + }, + "flags": 35, + "position": 1228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "monitoring__times_mirror", + "value": "monitoring__times_mirror", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`time`", + "value": "time", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`totalTime`", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": { + "@type": "@22" + }, + "flags": 35, + "position": 1299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new", + "value": "new", + "keyword": "NEW", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idServer", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new", + "value": "new", + "keyword": "NEW", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time", + "value": "time", + "keyword": "TIME", + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new", + "value": "new", + "keyword": "NEW", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "totalTime", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TRIGGER", + "value": "TRIGGER", + "keyword": "TRIGGER", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`deleteTimes`", + "value": "deleteTimes", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__times`", + "value": "monitoring__times", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR EACH ROW", + "value": "FOR EACH ROW", + "keyword": "FOR EACH ROW", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 1438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "monitoring__times_mirror", + "value": "monitoring__times_mirror", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old", + "value": "old", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idServer", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`time`", + "value": "time", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old", + "value": "old", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1529 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time", + "value": "time", + "keyword": "TIME", + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`totalTime`", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1553 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old", + "value": "old", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1554 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "totalTime", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1595 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TRIGGER", + "value": "TRIGGER", + "keyword": "TRIGGER", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`updateTimes`", + "value": "updateTimes", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1631 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1640 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__times`", + "value": "monitoring__times", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR EACH ROW", + "value": "FOR EACH ROW", + "keyword": "FOR EACH ROW", + "type": { + "@type": "@22" + }, + "flags": 7, + "position": 1661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "monitoring__times_mirror", + "value": "monitoring__times_mirror", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 1706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new", + "value": "new", + "keyword": "NEW", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idServer", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1734 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`time`", + "value": "time", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1735 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1741 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new", + "value": "new", + "keyword": "NEW", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time", + "value": "time", + "keyword": "TIME", + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1750 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`totalTime`", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new", + "value": "new", + "keyword": "NEW", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 1764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "totalTime", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old", + "value": "old", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idServer", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1799 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`time`", + "value": "time", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1818 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old", + "value": "old", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1819 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time", + "value": "time", + "keyword": "TIME", + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`totalTime`", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 1843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "old", + "value": "old", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 1847 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "totalTime", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1848 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1857 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 1861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1870 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 1871 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1872 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1876 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Index pour les tables déchargées", + "value": "-- Index pour les tables déchargées", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Index pour la table `monitoring__times`", + "value": "-- Index pour la table `monitoring__times`", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1962 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 1963 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1965 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1966 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 1972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1977 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__times`", + "value": "monitoring__times", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 1978 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 1997 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2000 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2003 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE KEY", + "value": "UNIQUE KEY", + "keyword": "UNIQUE KEY", + "type": { + "@type": "@22" + }, + "flags": 23, + "position": 2004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2014 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2015 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2025 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2026 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2027 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2037 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`time`", + "value": "time", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2038 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2044 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2045 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BTREE", + "value": "BTREE", + "keyword": "BTREE", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 2052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2057 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 2058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2065 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Unique idServer/time'", + "value": "Unique idServer/time", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 2066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2089 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2092 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": { + "@type": "@22" + }, + "flags": 19, + "position": 2096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2099 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`INDEX_totalTime`", + "value": "INDEX_totalTime", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`totalTime`", + "value": "totalTime", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BTREE", + "value": "BTREE", + "keyword": "BTREE", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 2138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 2144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Index for totalTime column'", + "value": "Index for totalTime column", + "keyword": null, + "type": { + "@type": "@31" + }, + "flags": 1, + "position": 2152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 2180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 2183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Contraintes pour les tables déchargées", + "value": "-- Contraintes pour les tables déchargées", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 2186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 2228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 2232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Contraintes pour la table `monitoring__times`", + "value": "-- Contraintes pour la table `monitoring__times`", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 2235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--\n", + "value": "--\n", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 4, + "position": 2284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2287 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__times`", + "value": "monitoring__times", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__times__idServer`", + "value": "monitoring__times__idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": { + "@type": "@22" + }, + "flags": 23, + "position": 2366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idServer`", + "value": "idServer", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": { + "@type": "@22" + }, + "flags": 3, + "position": 2391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`monitoring__servers`", + "value": "monitoring__servers", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 2, + "position": 2425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 16, + "position": 2429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 2430 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2431 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": { + "@type": "@22" + }, + "flags": 1, + "position": 2432 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 2438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!40101", + "value": "/*!40101", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 10, + "position": 2441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2449 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 2450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER_SET_CLIENT", + "value": "CHARACTER_SET_CLIENT", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 2454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 2474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@OLD_CHARACTER_SET_CLIENT", + "value": "OLD_CHARACTER_SET_CLIENT", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 1, + "position": 2475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 2, + "position": 2501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 2503 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!40101", + "value": "/*!40101", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 10, + "position": 2505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 2514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER_SET_RESULTS", + "value": "CHARACTER_SET_RESULTS", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 2518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 2539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@OLD_CHARACTER_SET_RESULTS", + "value": "OLD_CHARACTER_SET_RESULTS", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 1, + "position": 2540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 2, + "position": 2567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 2569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "/*!40101", + "value": "/*!40101", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 10, + "position": 2571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": { + "@type": "@22" + }, + "flags": 11, + "position": 2580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATION_CONNECTION", + "value": "COLLATION_CONNECTION", + "keyword": null, + "type": { + "@type": "@25" + }, + "flags": 0, + "position": 2584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": { + "@type": "@28" + }, + "flags": 2, + "position": 2604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@OLD_COLLATION_CONNECTION", + "value": "OLD_COLLATION_CONNECTION", + "keyword": null, + "type": { + "@type": "@62" + }, + "flags": 1, + "position": 2605 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*/", + "value": "*/", + "keyword": null, + "type": { + "@type": "@4" + }, + "flags": 2, + "position": 2631 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": 2633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": { + "@type": "@6" + }, + "flags": 0, + "position": 2634 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "", + "value": "", + "keyword": null, + "type": { + "@type": "@33" + }, + "flags": 0, + "position": null + } + ] + }, + "delimiter": ";", + "delimiterLen": 1 + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "strict": false, + "errors": [], + "list": { + "@type": "@2" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "SQL_MODE", + "value": "\"NO_AUTO_VALUE_ON_ZERO\"" + } + ], + "first": 0, + "last": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "AUTOCOMMIT", + "value": "0" + } + ], + "first": 23, + "last": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "time_zone", + "value": "\"+00:00\"" + } + ], + "first": 35, + "last": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "@OLD_CHARACTER_SET_CLIENT", + "value": "@@CHARACTER_SET_CLIENT" + } + ], + "first": 44, + "last": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "@OLD_CHARACTER_SET_RESULTS", + "value": "@@CHARACTER_SET_RESULTS" + } + ], + "first": 55, + "last": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "@OLD_COLLATION_CONNECTION", + "value": "@@COLLATION_CONNECTION" + } + ], + "first": 66, + "last": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "utf8mb4", + "value": "utf8mb4" + } + } + }, + "endOptions": null, + "set": [], + "first": 77, + "last": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "monitoring__times", + "column": null, + "expr": "`monitoring__times`", + "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": "utf8", + "value": "utf8" + }, + "6": { + "name": "COLLATE", + "equals": true, + "expr": "utf8_unicode_ci", + "value": "utf8_unicode_ci" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "idServer", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Id of server'", + "value": "Id of server" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "time", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "TIMESTAMP", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "lowercase": false + }, + "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", + "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", + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + }, + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Time UTC'", + "value": "Time UTC" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "name": "totalTime", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "name": "FLOAT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + }, + "lowercase": false + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "5": { + "name": "COMMENT", + "equals": false, + "expr": "'Total time in ms'", + "value": "Total time in ms" + } + } + } + } + ], + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 88, + "last": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "copyTimes", + "column": null, + "expr": "`copyTimes`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "AFTER", + "2": "INSERT" + } + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "monitoring__times", + "column": null, + "expr": "`monitoring__times`", + "alias": null, + "function": null, + "subquery": null + }, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@212" + }, + { + "@type": "@213" + }, + { + "@type": "@214" + }, + { + "@type": "@215" + }, + { + "@type": "@216" + }, + { + "@type": "@217" + }, + { + "@type": "@218" + }, + { + "@type": "@219" + }, + { + "@type": "@220" + }, + { + "@type": "@221" + }, + { + "@type": "@222" + }, + { + "@type": "@223" + }, + { + "@type": "@224" + }, + { + "@type": "@225" + }, + { + "@type": "@226" + }, + { + "@type": "@227" + }, + { + "@type": "@228" + }, + { + "@type": "@229" + }, + { + "@type": "@230" + }, + { + "@type": "@231" + }, + { + "@type": "@232" + }, + { + "@type": "@233" + }, + { + "@type": "@234" + }, + { + "@type": "@235" + }, + { + "@type": "@236" + }, + { + "@type": "@237" + }, + { + "@type": "@238" + }, + { + "@type": "@239" + }, + { + "@type": "@240" + }, + { + "@type": "@241" + }, + { + "@type": "@242" + }, + { + "@type": "@243" + }, + { + "@type": "@244" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TRIGGER" + } + }, + "first": 184, + "last": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "deleteTimes", + "column": null, + "expr": "`deleteTimes`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "AFTER", + "2": "DELETE" + } + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "monitoring__times", + "column": null, + "expr": "`monitoring__times`", + "alias": null, + "function": null, + "subquery": null + }, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@271" + }, + { + "@type": "@272" + }, + { + "@type": "@273" + }, + { + "@type": "@274" + }, + { + "@type": "@275" + }, + { + "@type": "@276" + }, + { + "@type": "@277" + }, + { + "@type": "@278" + }, + { + "@type": "@279" + }, + { + "@type": "@280" + }, + { + "@type": "@281" + }, + { + "@type": "@282" + }, + { + "@type": "@283" + }, + { + "@type": "@284" + }, + { + "@type": "@285" + }, + { + "@type": "@286" + }, + { + "@type": "@287" + }, + { + "@type": "@288" + }, + { + "@type": "@289" + }, + { + "@type": "@290" + }, + { + "@type": "@291" + }, + { + "@type": "@292" + }, + { + "@type": "@293" + }, + { + "@type": "@294" + }, + { + "@type": "@295" + }, + { + "@type": "@296" + }, + { + "@type": "@297" + }, + { + "@type": "@298" + }, + { + "@type": "@299" + }, + { + "@type": "@300" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TRIGGER" + } + }, + "first": 243, + "last": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "updateTimes", + "column": null, + "expr": "`updateTimes`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "AFTER", + "2": "UPDATE" + } + }, + "fields": null, + "with": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "monitoring__times", + "column": null, + "expr": "`monitoring__times`", + "alias": null, + "function": null, + "subquery": null + }, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@327" + }, + { + "@type": "@328" + }, + { + "@type": "@329" + }, + { + "@type": "@330" + }, + { + "@type": "@331" + }, + { + "@type": "@332" + }, + { + "@type": "@333" + }, + { + "@type": "@334" + }, + { + "@type": "@335" + }, + { + "@type": "@336" + }, + { + "@type": "@337" + }, + { + "@type": "@338" + }, + { + "@type": "@339" + }, + { + "@type": "@340" + }, + { + "@type": "@341" + }, + { + "@type": "@342" + }, + { + "@type": "@343" + }, + { + "@type": "@344" + }, + { + "@type": "@345" + }, + { + "@type": "@346" + }, + { + "@type": "@347" + }, + { + "@type": "@348" + }, + { + "@type": "@349" + }, + { + "@type": "@350" + }, + { + "@type": "@351" + }, + { + "@type": "@352" + }, + { + "@type": "@353" + }, + { + "@type": "@354" + }, + { + "@type": "@355" + }, + { + "@type": "@356" + }, + { + "@type": "@357" + }, + { + "@type": "@358" + }, + { + "@type": "@359" + }, + { + "@type": "@360" + }, + { + "@type": "@361" + }, + { + "@type": "@362" + }, + { + "@type": "@363" + }, + { + "@type": "@364" + }, + { + "@type": "@365" + }, + { + "@type": "@366" + }, + { + "@type": "@367" + }, + { + "@type": "@368" + }, + { + "@type": "@369" + }, + { + "@type": "@370" + }, + { + "@type": "@371" + }, + { + "@type": "@372" + }, + { + "@type": "@373" + }, + { + "@type": "@374" + }, + { + "@type": "@375" + }, + { + "@type": "@376" + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TRIGGER" + } + }, + "first": 299, + "last": 365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "monitoring__times", + "column": null, + "expr": "`monitoring__times`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "UNIQUE KEY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "idServer", + "expr": "`idServer`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@407" + }, + { + "@type": "@408" + }, + { + "@type": "@409" + }, + { + "@type": "@410" + }, + { + "@type": "@411" + }, + { + "@type": "@412" + }, + { + "@type": "@413" + }, + { + "@type": "@414" + }, + { + "@type": "@415" + }, + { + "@type": "@416" + }, + { + "@type": "@417" + }, + { + "@type": "@418" + }, + { + "@type": "@419" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": { + "name": "KEY", + "equals": false, + "expr": "`INDEX_totalTime`", + "value": "INDEX_totalTime" + } + } + }, + "field": null, + "partitions": null, + "unknown": [ + { + "@type": "@428" + }, + { + "@type": "@429" + }, + { + "@type": "@430" + }, + { + "@type": "@431" + }, + { + "@type": "@432" + }, + { + "@type": "@433" + }, + { + "@type": "@434" + }, + { + "@type": "@435" + }, + { + "@type": "@436" + }, + { + "@type": "@437" + }, + { + "@type": "@438" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 371, + "last": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": "monitoring__times", + "column": null, + "expr": "`monitoring__times`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "CONSTRAINT" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "database": null, + "table": null, + "column": "monitoring__times__idServer", + "expr": "`monitoring__times__idServer`", + "alias": null, + "function": null, + "subquery": null + }, + "partitions": null, + "unknown": [ + { + "@type": "@465" + }, + { + "@type": "@466" + }, + { + "@type": "@467" + }, + { + "@type": "@468" + }, + { + "@type": "@469" + }, + { + "@type": "@470" + }, + { + "@type": "@471" + }, + { + "@type": "@472" + }, + { + "@type": "@473" + }, + { + "@type": "@474" + }, + { + "@type": "@475" + }, + { + "@type": "@476" + }, + { + "@type": "@477" + } + ] + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 428, + "last": 466 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 467, + "last": 468 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 32, + "last": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "CHARACTER_SET_CLIENT", + "value": "@OLD_CHARACTER_SET_CLIENT" + } + ], + "first": 469, + "last": 479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "CHARACTER_SET_RESULTS", + "value": "@OLD_CHARACTER_SET_RESULTS" + } + ], + "first": 480, + "last": 490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "endOptions": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "COLLATION_CONNECTION", + "value": "@OLD_COLLATION_CONNECTION" + } + ], + "first": 491, + "last": 501 + } + ], + "brackets": 0 + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/tools/ContextGenerator.php b/tools/ContextGenerator.php index ac24156c6..26a05446e 100644 --- a/tools/ContextGenerator.php +++ b/tools/ContextGenerator.php @@ -1,401 +1,44 @@ 2, // reserved - '(D)' => 8, // data type - '(K)' => 16, // keyword - '(F)' => 32, // function name - ]; - - /** - * Documentation links for each context. - * - * @var array - */ - public static $LINKS = [ - 'MySql50000' => 'https://dev.mysql.com/doc/refman/5.0/en/keywords.html', - 'MySql50100' => 'https://dev.mysql.com/doc/refman/5.1/en/keywords.html', - 'MySql50500' => 'https://dev.mysql.com/doc/refman/5.5/en/keywords.html', - 'MySql50600' => 'https://dev.mysql.com/doc/refman/5.6/en/keywords.html', - 'MySql50700' => 'https://dev.mysql.com/doc/refman/5.7/en/keywords.html', - 'MySql80000' => 'https://dev.mysql.com/doc/refman/8.0/en/keywords.html', - 'MariaDb100000' => 'https://mariadb.com/kb/en/the-mariadb-library/reserved-words/', - 'MariaDb100100' => 'https://mariadb.com/kb/en/the-mariadb-library/reserved-words/', - 'MariaDb100200' => 'https://mariadb.com/kb/en/the-mariadb-library/reserved-words/', - 'MariaDb100300' => 'https://mariadb.com/kb/en/the-mariadb-library/reserved-words/', - ]; - - /** - * The template of a context. - * - * Parameters: - * 1 - name - * 2 - class - * 3 - link - * 4 - keywords array - * - * @var string - */ - const TEMPLATE = - ' $flags) { - if (strstr($value, $label) !== false) { - $type |= $flags; - $value = trim(str_replace($label, '', $value)); - } - } - - // Composed keyword. - if (strstr($value, ' ') !== false) { - $type |= 2; // Reserved keyword. - $type |= 4; // Composed keyword. - } - - $len = strlen($words[$i]); - if ($len === 0) { - continue; - } - - $value = strtoupper($value); - if (! isset($types[$value])) { - $types[$value] = $type; - } else { - $types[$value] |= $type; - } - } - - $ret = []; - foreach ($types as $word => $type) { - $len = strlen($word); - if (! isset($ret[$type])) { - $ret[$type] = []; - } - if (! isset($ret[$type][$len])) { - $ret[$type][$len] = []; - } - $ret[$type][$len][] = $word; - } - - return static::sortWords($ret); - } - - /** - * Prints an array of a words in PHP format. - * - * @param array $words the list of words to be formatted - * @param int $spaces the number of spaces that starts every line - * @param int $line the length of a line - * - * @return string - */ - public static function printWords($words, $spaces = 8, $line = 80) - { - $typesCount = count($words); - $ret = ''; - $j = 0; - - foreach ($words as $type => $wordsByType) { - foreach ($wordsByType as $len => $wordsByLen) { - $count = round(($line - $spaces) / ($len + 9)); // strlen("'' => 1, ") = 9 - $i = 0; - - foreach ($wordsByLen as $word) { - if ($i === 0) { - $ret .= str_repeat(' ', $spaces); - } - $ret .= sprintf('\'%s\' => %s, ', $word, $type); - if (++$i === $count) { - $ret .= "\n"; - $i = 0; - } - } - - if ($i !== 0) { - $ret .= "\n"; - } - } - - if (++$j < $typesCount) { - $ret .= "\n"; - } - } - - // Trim trailing spaces and return. - return str_replace(" \n", "\n", $ret); - } - - /** - * Generates a context's class. - * - * @param array $options the options that are used in generating this context - * - * @return string - */ - public static function generate($options) - { - if (isset($options['keywords'])) { - $options['keywords'] = static::printWords($options['keywords']); - } - - return sprintf( - static::TEMPLATE, - $options['name'], - $options['class'], - $options['link'], - $options['keywords'] - ); - } - - /** - * Formats context name. - * - * @param string $name name to format - * - * @return string - */ - public static function formatName($name) - { - /* Split name and version */ - $parts = []; - if (preg_match('/([^[0-9]*)([0-9]*)/', $name, $parts) === false) { - return $name; - } - - /* Format name */ - $base = $parts[1]; - switch ($base) { - case 'MySql': - $base = 'MySQL'; - break; - case 'MariaDb': - $base = 'MariaDB'; - break; - } - - /* Parse version to array */ - $ver_str = $parts[2]; - if (strlen($ver_str) % 2 === 1) { - $ver_str = '0' . $ver_str; - } - $version = array_map('intval', str_split($ver_str, 2)); - /* Remove trailing zero */ - if ($version[count($version) - 1] === 0) { - $version = array_slice($version, 0, count($version) - 1); - } - /* Create name */ - return $base . ' ' . implode('.', $version); - } - - /** - * Builds a test. - * - * Reads the input file, generates the data and writes it back. - * - * @param string $input the input file - * @param string $output the output directory - */ - public static function build($input, $output) - { - /** - * The directory that contains the input file. - * - * Used to include common files. - * - * @var string - */ - $directory = dirname($input) . '/'; - - /** - * The name of the file that contains the context. - * - * @var string - */ - $file = basename($input); - - /** - * The name of the context. - * - * @var string - */ - $name = substr($file, 0, -4); - - /** - * The name of the class that defines this context. - * - * @var string - */ - $class = 'Context' . $name; - - /** - * The formatted name of this context. - * - * @var string - */ - $formattedName = static::formatName($name); - - file_put_contents( - $output . '/' . $class . '.php', - static::generate( - [ - 'name' => $formattedName, - 'class' => $class, - 'link' => static::$LINKS[$name], - 'keywords' => static::readWords( - [ - $directory . '_common.txt', - $directory . '_functions' . $file, - $directory . $file, - ] - ), - ] - ) - ); - } - - /** - * Generates recursively all tests preserving the directory structure. - * - * @param string $input the input directory - * @param string $output the output directory - */ - public static function buildAll($input, $output) - { - $files = scandir($input); - - foreach ($files as $file) { - // Skipping current and parent directories. - if (($file[0] === '.') || ($file[0] === '_')) { - continue; - } - - // Building the context. - sprintf("Building context for %s...\n", $file); - static::build($input . '/' . $file, $output); - } - } +if (count($argv) < 3) { + return; } -// Test generator. -// -// Example of usage: -// -// php ContextGenerator.php data data -// -// Input data must be in the `data` folder. -// The output will be generated in the same `data` folder. -// -if (count($argv) >= 3) { - // Extracting directories' name from command line and trimming unnecessary - // slashes at the end. - $input = rtrim($argv[1], '/'); - $output = rtrim($argv[2], '/'); +// Extracting directories' name from command line and trimming unnecessary +// slashes at the end. +$input = rtrim($argv[1], '/'); +$output = rtrim($argv[2], '/'); - // Checking if all directories are valid. - if (! is_dir($input)) { - throw new \Exception('The input directory does not exist.'); - } elseif (! is_dir($output)) { - throw new \Exception('The output directory does not exist.'); - } +// Checking if all directories are valid. +if (! is_dir($input)) { + throw new Exception('The input directory does not exist.'); +} - // Finally, building the tests. - ContextGenerator::buildAll($input, $output); +if (! is_dir($output)) { + throw new Exception('The output directory does not exist.'); } + +// Finally, building the tests. +ContextGenerator::buildAll($input, $output); diff --git a/tools/TestGenerator.php b/tools/TestGenerator.php index d52e70898..ee5de7488 100644 --- a/tools/TestGenerator.php +++ b/tools/TestGenerator.php @@ -1,226 +1,43 @@ list) : null; - - /** - * Lexer's errors. - * - * @var array - */ - $lexerErrors = []; - - /** - * Parser's errors. - * - * @var array - */ - $parserErrors = []; - - // Both the lexer and the parser construct exception for errors. - // Usually, exceptions contain a full stack trace and other details that - // are not required. - // The code below extracts only the relevant information. - - // Extracting lexer's errors. - if (! empty($lexer->errors)) { - foreach ($lexer->errors as $err) { - $lexerErrors[] = [ - $err->getMessage(), - $err->ch, - $err->pos, - $err->getCode(), - ]; - } - $lexer->errors = []; - } - - // Extracting parser's errors. - if (! empty($parser->errors)) { - foreach ($parser->errors as $err) { - $parserErrors[] = [ - $err->getMessage(), - $err->token, - $err->getCode(), - ]; - } - $parser->errors = []; - } - - return [ - 'query' => $query, - 'lexer' => $lexer, - 'parser' => $parser, - 'errors' => [ - 'lexer' => $lexerErrors, - 'parser' => $parserErrors, - ], - ]; - } - - /** - * Builds a test. - * - * Reads the input file, generates the data and writes it back. - * - * @param string $type the type of this test - * @param string $input the input file - * @param string $output the output file - * @param string $debug the debug file - */ - public static function build($type, $input, $output, $debug = null) - { - // Support query types: `lexer` / `parser`. - if (! in_array($type, ['lexer', 'parser'])) { - throw new \Exception('Unknown test type (expected `lexer` or `parser`).'); - } - - /** - * The query that is used to generate the test. - * - * @var string - */ - $query = file_get_contents($input); - - // There is no point in generating a test without a query. - if (empty($query)) { - throw new \Exception('No input query specified.'); - } - - $test = static::generate($query, $type); - - // Writing test's data. - file_put_contents($output, serialize($test)); - - // Dumping test's data in human readable format too (if required). - if (! empty($debug)) { - file_put_contents($debug, print_r($test, true)); - } - } - - /** - * Generates recursively all tests preserving the directory structure. - * - * @param string $input the input directory - * @param string $output the output directory - * @param null|mixed $debug - */ - public static function buildAll($input, $output, $debug = null) - { - $files = scandir($input); - - foreach ($files as $file) { - // Skipping current and parent directories. - if (($file === '.') || ($file === '..')) { - continue; - } - - // Appending the filename to directories. - $inputFile = $input . '/' . $file; - $outputFile = $output . '/' . $file; - $debugFile = ($debug !== null) ? $debug . '/' . $file : null; - - if (is_dir($inputFile)) { - // Creating required directories to maintain the structure. - // Ignoring errors if the folder structure exists already. - if (! is_dir($outputFile)) { - mkdir($outputFile); - } - if (($debug !== null) && (! is_dir($debugFile))) { - mkdir($debugFile); - } +if (count($argv) < 3) { + return; +} - // Generating tests recursively. - static::buildAll($inputFile, $outputFile, $debugFile); - } elseif (substr($inputFile, -3) === '.in') { - // Generating file names by replacing `.in` with `.out` and - // `.debug`. - $outputFile = substr($outputFile, 0, -3) . '.out'; - if ($debug !== null) { - $debugFile = substr($debugFile, 0, -3) . '.debug'; - } +// Extracting directories' name from command line and trimming unnecessary +// slashes at the end. +$input = rtrim($argv[1], '/'); +$output = rtrim($argv[2], '/'); +$debug = empty($argv[3]) ? null : rtrim($argv[3], '/'); - // Building the test. - if (! file_exists($outputFile)) { - sprintf("Building test for %s...\n", $inputFile); - static::build( - strpos($inputFile, 'lex') !== false ? 'lexer' : 'parser', - $inputFile, - $outputFile, - $debugFile - ); - } else { - sprintf("Test for %s already built!\n", $inputFile); - } - } - } - } +// Checking if all directories are valid. +if (! is_dir($input)) { + throw new Exception('The input directory does not exist.'); } -// Test generator. -// -// Example of usage: -// -// php TestGenerator.php ../tests/data ../tests/data -// -// Input data must be in the `../tests/data` folder. -// The output will be generated in the same `../tests/data` folder. -// -if (count($argv) >= 3) { - // Extracting directories' name from command line and trimming unnecessary - // slashes at the end. - $input = rtrim($argv[1], '/'); - $output = rtrim($argv[2], '/'); - $debug = empty($argv[3]) ? null : rtrim($argv[3], '/'); - - // Checking if all directories are valid. - if (! is_dir($input)) { - throw new \Exception('The input directory does not exist.'); - } elseif (! is_dir($output)) { - throw new \Exception('The output directory does not exist.'); - } elseif (($debug !== null) && (! is_dir($debug))) { - throw new \Exception('The debug directory does not exist.'); - } +if (! is_dir($output)) { + throw new Exception('The output directory does not exist.'); +} - // Finally, building the tests. - TestGenerator::buildAll($input, $output, $debug); +if (($debug !== null) && (! is_dir($debug))) { + throw new Exception('The debug directory does not exist.'); } + +// Finally, building the tests. +TestGenerator::buildAll($input, $output, $debug); diff --git a/tools/contexts/MariaDb100000.txt b/tools/contexts/MariaDb100000.txt index ba6f7f977..387ec1005 100644 --- a/tools/contexts/MariaDb100000.txt +++ b/tools/contexts/MariaDb100000.txt @@ -116,6 +116,7 @@ DESCRIBE (R) DETERMINISTIC (R) DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -193,6 +194,7 @@ HOUR_MICROSECOND (R) HOUR_MINUTE (R) HOUR_SECOND (R) IDENTIFIED +IDENTIFIED WITH (K) IF (R) IGNORE (R) IGNORE_SERVER_IDS @@ -329,6 +331,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONE_SHOT OPEN diff --git a/tools/contexts/MariaDb100100.txt b/tools/contexts/MariaDb100100.txt index 0c37a7e1a..9341b5bae 100644 --- a/tools/contexts/MariaDb100100.txt +++ b/tools/contexts/MariaDb100100.txt @@ -123,6 +123,7 @@ DETERMINISTIC (R) DIAGNOSTICS DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -209,6 +210,7 @@ HOUR_MICROSECOND (R) HOUR_MINUTE (R) HOUR_SECOND (R) IDENTIFIED +IDENTIFIED WITH (K) IF (R) IGNORE (R) IGNORE_SERVER_IDS @@ -355,6 +357,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONLY OPEN @@ -614,4 +619,4 @@ XML XOR (R) YEAR YEAR_MONTH (R) -ZEROFILL (R) \ No newline at end of file +ZEROFILL (R) diff --git a/tools/contexts/MariaDb100200.txt b/tools/contexts/MariaDb100200.txt index 99489882c..1a820ce6d 100644 --- a/tools/contexts/MariaDb100200.txt +++ b/tools/contexts/MariaDb100200.txt @@ -123,6 +123,7 @@ DETERMINISTIC (R) DIAGNOSTICS DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -209,6 +210,7 @@ HOUR_MICROSECOND (R) HOUR_MINUTE (R) HOUR_SECOND (R) IDENTIFIED +IDENTIFIED WITH (K) IF (R) IGNORE (R) IGNORE_SERVER_IDS @@ -355,6 +357,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONLY OPEN @@ -369,6 +374,7 @@ OUT (R) OUTER (R) OUTFILE (R) OWNER +OVER (R) PACK_KEYS PAGE PARSE_GCOL_EXPR diff --git a/tools/contexts/MariaDb100300.txt b/tools/contexts/MariaDb100300.txt index d9ae55e0f..92452a828 100644 --- a/tools/contexts/MariaDb100300.txt +++ b/tools/contexts/MariaDb100300.txt @@ -123,6 +123,7 @@ DETERMINISTIC (R) DIAGNOSTICS DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -210,6 +211,7 @@ HOUR_MICROSECOND (R) HOUR_MINUTE (R) HOUR_SECOND (R) IDENTIFIED +IDENTIFIED WITH (K) IF (R) IGNORE (R) IGNORE_SERVER_IDS @@ -236,6 +238,7 @@ INTERSECT (R) INTERVAL (R) INTO (R) INVOKER +INVISIBLE IO IO_AFTER_GTIDS (R) IO_BEFORE_GTIDS (R) @@ -357,6 +360,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONLY OPEN @@ -371,6 +377,7 @@ OUT (R) OUTER (R) OUTFILE (R) OWNER +OVER (R) PACK_KEYS PAGE PARSE_GCOL_EXPR diff --git a/tools/contexts/MariaDb100400.txt b/tools/contexts/MariaDb100400.txt new file mode 100644 index 000000000..02e421548 --- /dev/null +++ b/tools/contexts/MariaDb100400.txt @@ -0,0 +1,629 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb100500.txt b/tools/contexts/MariaDb100500.txt new file mode 100644 index 000000000..02e421548 --- /dev/null +++ b/tools/contexts/MariaDb100500.txt @@ -0,0 +1,629 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb100600.txt b/tools/contexts/MariaDb100600.txt new file mode 100644 index 000000000..b72b0a0c8 --- /dev/null +++ b/tools/contexts/MariaDb100600.txt @@ -0,0 +1,629 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb100700.txt b/tools/contexts/MariaDb100700.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb100700.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb100800.txt b/tools/contexts/MariaDb100800.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb100800.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb100900.txt b/tools/contexts/MariaDb100900.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb100900.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb101000.txt b/tools/contexts/MariaDb101000.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb101000.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb101100.txt b/tools/contexts/MariaDb101100.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb101100.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110000.txt b/tools/contexts/MariaDb110000.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110000.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110100.txt b/tools/contexts/MariaDb110100.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110100.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110200.txt b/tools/contexts/MariaDb110200.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110200.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110300.txt b/tools/contexts/MariaDb110300.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110300.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110400.txt b/tools/contexts/MariaDb110400.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110400.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110500.txt b/tools/contexts/MariaDb110500.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110500.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110600.txt b/tools/contexts/MariaDb110600.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110600.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MariaDb110700.txt b/tools/contexts/MariaDb110700.txt new file mode 100644 index 000000000..5e0346e4c --- /dev/null +++ b/tools/contexts/MariaDb110700.txt @@ -0,0 +1,630 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCEPT (R) +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED VIA (K) +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERSECT (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET (R) +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OWNER +OVER (R) +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +RECURSIVE (R) +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROW_NUMBER (R) +ROWS (R) +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SEQUENCE +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MySql50100.txt b/tools/contexts/MySql50100.txt index ea41bb851..dd9829b53 100644 --- a/tools/contexts/MySql50100.txt +++ b/tools/contexts/MySql50100.txt @@ -111,6 +111,7 @@ DESCRIBE (R) DETERMINISTIC (R) DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -320,6 +321,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONE_SHOT OPEN @@ -544,6 +548,7 @@ WHEN (R) WHERE (R) WHILE (R) WITH (R) +WITH PARSER WORK WRAPPER WRITE (R) @@ -552,4 +557,4 @@ XA XOR (R) YEAR YEAR_MONTH (R) -ZEROFILL (R) \ No newline at end of file +ZEROFILL (R) diff --git a/tools/contexts/MySql50500.txt b/tools/contexts/MySql50500.txt index 3c1bbf320..01ab86a54 100644 --- a/tools/contexts/MySql50500.txt +++ b/tools/contexts/MySql50500.txt @@ -116,6 +116,7 @@ DESCRIBE (R) DETERMINISTIC (R) DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -329,6 +330,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONE_SHOT OPEN @@ -553,6 +557,7 @@ WHEN (R) WHERE (R) WHILE (R) WITH (R) +WITH PARSER WORK WRAPPER WRITE (R) @@ -562,4 +567,4 @@ XML XOR (R) YEAR YEAR_MONTH (R) -ZEROFILL (R) \ No newline at end of file +ZEROFILL (R) diff --git a/tools/contexts/MySql50600.txt b/tools/contexts/MySql50600.txt index 960ebbfdd..85dc73f37 100644 --- a/tools/contexts/MySql50600.txt +++ b/tools/contexts/MySql50600.txt @@ -121,6 +121,7 @@ DETERMINISTIC (R) DIAGNOSTICS DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -345,6 +346,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONE_SHOT ONLY @@ -580,6 +584,7 @@ WHEN (R) WHERE (R) WHILE (R) WITH (R) +WITH PARSER WORK WRAPPER WRITE (R) @@ -589,4 +594,4 @@ XML XOR (R) YEAR YEAR_MONTH (R) -ZEROFILL (R) \ No newline at end of file +ZEROFILL (R) diff --git a/tools/contexts/MySql50700.txt b/tools/contexts/MySql50700.txt index 0c37a7e1a..f96ff0e27 100644 --- a/tools/contexts/MySql50700.txt +++ b/tools/contexts/MySql50700.txt @@ -123,6 +123,7 @@ DETERMINISTIC (R) DIAGNOSTICS DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -209,6 +210,7 @@ HOUR_MICROSECOND (R) HOUR_MINUTE (R) HOUR_SECOND (R) IDENTIFIED +IDENTIFIED WITH (K) IF (R) IGNORE (R) IGNORE_SERVER_IDS @@ -355,6 +357,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONLY OPEN @@ -603,6 +608,7 @@ WHEN (R) WHERE (R) WHILE (R) WITH (R) +WITH PARSER WITHOUT WORK WRAPPER @@ -614,4 +620,4 @@ XML XOR (R) YEAR YEAR_MONTH (R) -ZEROFILL (R) \ No newline at end of file +ZEROFILL (R) diff --git a/tools/contexts/MySql80000.txt b/tools/contexts/MySql80000.txt index 0c37a7e1a..6661cdf83 100644 --- a/tools/contexts/MySql80000.txt +++ b/tools/contexts/MySql80000.txt @@ -123,6 +123,7 @@ DETERMINISTIC (R) DIAGNOSTICS DIRECTORY DISABLE +DISABLE ON SLAVE DISCARD DISK DISTINCT (R) @@ -209,6 +210,7 @@ HOUR_MICROSECOND (R) HOUR_MINUTE (R) HOUR_SECOND (R) IDENTIFIED +IDENTIFIED WITH (K) IF (R) IGNORE (R) IGNORE_SERVER_IDS @@ -234,6 +236,7 @@ INTEGER (R) INTERVAL (R) INTO (R) INVOKER +INVISIBLE IO IO_AFTER_GTIDS (R) IO_BEFORE_GTIDS (R) @@ -355,6 +358,9 @@ NVARCHAR OFFSET OLD_PASSWORD ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE ONE ONLY OPEN @@ -368,6 +374,7 @@ ORDER (R) OUT (R) OUTER (R) OUTFILE (R) +OVER (R) OWNER PACK_KEYS PAGE @@ -378,6 +385,8 @@ PARTITION (R) PARTITIONING PARTITIONS PASSWORD +PERSIST +PERSIST_ONLY PHASE PLUGIN PLUGIN_DIR @@ -603,6 +612,7 @@ WHEN (R) WHERE (R) WHILE (R) WITH (R) +WITH PARSER WITHOUT WORK WRAPPER @@ -614,4 +624,4 @@ XML XOR (R) YEAR YEAR_MONTH (R) -ZEROFILL (R) \ No newline at end of file +ZEROFILL (R) diff --git a/tools/contexts/MySql80100.txt b/tools/contexts/MySql80100.txt new file mode 100644 index 000000000..6661cdf83 --- /dev/null +++ b/tools/contexts/MySql80100.txt @@ -0,0 +1,627 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OVER (R) +OWNER +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PERSIST +PERSIST_ONLY +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITH PARSER +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MySql80200.txt b/tools/contexts/MySql80200.txt new file mode 100644 index 000000000..6661cdf83 --- /dev/null +++ b/tools/contexts/MySql80200.txt @@ -0,0 +1,627 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OVER (R) +OWNER +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PERSIST +PERSIST_ONLY +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITH PARSER +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MySql80300.txt b/tools/contexts/MySql80300.txt new file mode 100644 index 000000000..6661cdf83 --- /dev/null +++ b/tools/contexts/MySql80300.txt @@ -0,0 +1,627 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MASTER +MASTER_AUTO_POSITION +MASTER_BIND (R) +MASTER_CONNECT_RETRY +MASTER_DELAY +MASTER_HEARTBEAT_PERIOD +MASTER_HOST +MASTER_LOG_FILE +MASTER_LOG_POS +MASTER_PASSWORD +MASTER_PORT +MASTER_RETRY_COUNT +MASTER_SERVER_ID +MASTER_SSL +MASTER_SSL_CA +MASTER_SSL_CAPATH +MASTER_SSL_CERT +MASTER_SSL_CIPHER +MASTER_SSL_CRL +MASTER_SSL_CRLPATH +MASTER_SSL_KEY +MASTER_SSL_VERIFY_SERVER_CERT (R) +MASTER_USER +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OVER (R) +OWNER +PACK_KEYS +PAGE +PARSE_GCOL_EXPR +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PERSIST +PERSIST_ONLY +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS +RTREE +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITH PARSER +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MySql80400.txt b/tools/contexts/MySql80400.txt new file mode 100644 index 000000000..832a52da4 --- /dev/null +++ b/tools/contexts/MySql80400.txt @@ -0,0 +1,616 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BERNOULLI +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +GTIDS +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOG +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MANUAL (R) +MASTER +MASTER_SERVER_ID +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OVER (R) +OWNER +PACK_KEYS +PAGE +PARALLEL (R) +PARSE_GCOL_EXPR +PARSE_TREE +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PERSIST +PERSIST_ONLY +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUALIFY (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS +RTREE +S3 +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESAMPLE (R) +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITH PARSER +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MySql90000.txt b/tools/contexts/MySql90000.txt new file mode 100644 index 000000000..65ecf0fc5 --- /dev/null +++ b/tools/contexts/MySql90000.txt @@ -0,0 +1,617 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BERNOULLI +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +GTIDS +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOG +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MANUAL (R) +MASTER +MASTER_SERVER_ID +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OVER (R) +OWNER +PACK_KEYS +PAGE +PARALLEL (R) +PARSE_GCOL_EXPR +PARSE_TREE +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PERSIST +PERSIST_ONLY +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUALIFY (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS +RTREE +S3 +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESAMPLE (R) +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VECTOR (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITH PARSER +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/MySql90100.txt b/tools/contexts/MySql90100.txt new file mode 100644 index 000000000..65ecf0fc5 --- /dev/null +++ b/tools/contexts/MySql90100.txt @@ -0,0 +1,617 @@ +ACCESSIBLE (R) +ACCOUNT +ACTION +ADD (R) +AFTER +AGAINST +AGGREGATE +ALGORITHM +ALL (R) +ALTER (R) +ALWAYS +ANALYSE +ANALYZE (R) +AND (R) +ANY +AS (R) +ASC (R) +ASCII +ASENSITIVE (R) +AT +AUTO +AUTO_INCREMENT +AUTOEXTEND_SIZE +AVG +AVG_ROW_LENGTH +BACKUP +BEFORE (R) +BEGIN +BERNOULLI +BETWEEN (R) +BIGINT (R) +BINARY (R) +BINLOG +BIT +BLOB (R) +BLOCK +BOOL +BOOLEAN +BOTH (R) +BTREE +BY (R) +BYTE +CACHE +CALL (R) +CASCADE (R) +CASCADED +CASE (R) +CATALOG_NAME +CHAIN +CHANGE (R) +CHANGED +CHANNEL +CHAR (R) +CHARACTER (R) +CHARSET +CHECK (R) +CHECKSUM +CIPHER +CLASS_ORIGIN +CLIENT +CLOSE +COALESCE +CODE +COLLATE (R) +COLLATION +COLUMN (R) +COLUMN_FORMAT +COLUMN_NAME +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETION +COMPRESSED +COMPRESSION +CONCURRENT +CONDITION (R) +CONNECTION +CONSISTENT +CONSTRAINT (R) +CONSTRAINT_CATALOG +CONSTRAINT_NAME +CONSTRAINT_SCHEMA +CONTAINS +CONTEXT +CONTINUE (R) +CONVERT (R) +CPU +CREATE (R) +CROSS (R) +CUBE +CURRENT +CURRENT_DATE (R) +CURRENT_TIME (R) +CURRENT_TIMESTAMP (R) +CURRENT_USER (R) +CURSOR (R) +CURSOR_NAME +DATA +DATABASE (R) +DATABASES (R) +DATAFILE +DATE +DATETIME +DAY +DAY_HOUR (R) +DAY_MICROSECOND (R) +DAY_MINUTE (R) +DAY_SECOND (R) +DEALLOCATE +DEC (R) +DECIMAL (R) +DECLARE (R) +DEFAULT (R) +DEFAULT_AUTH +DEFINER +DELAY_KEY_WRITE +DELAYED (R) +DELETE (R) +DES_KEY_FILE +DESC (R) +DESCRIBE (R) +DETERMINISTIC (R) +DIAGNOSTICS +DIRECTORY +DISABLE +DISABLE ON SLAVE +DISCARD +DISK +DISTINCT (R) +DISTINCTROW (R) +DIV (R) +DO +DOUBLE (R) +DROP (R) +DUAL (R) +DUMPFILE +DUPLICATE +DYNAMIC +EACH (R) +ELSE (R) +ELSEIF (R) +ENABLE +ENCLOSED (R) +END +ENDS +ENGINE +ENGINES +ENUM +ERROR +ERRORS +ESCAPE +ESCAPED (R) +EVENT +EVENTS +EVERY +EXCHANGE +EXECUTE +EXISTS (R) +EXIT (R) +EXPANSION +EXPIRE +EXPLAIN (R) +EXPORT +EXTENDED +EXTENT_SIZE +FALSE (R) +FAST +FAULTS +FETCH (R) +FIELDS +FILE +FILE_BLOCK_SIZE +FILTER +FIRST +FIXED +FLOAT (R) +FLOAT4 (R) +FLOAT8 (R) +FLUSH +FOLLOWS +FOR (R) +FORCE (R) +FOREIGN (R) +FORMAT +FOUND +FROM (R) +FULL +FULLTEXT (R) +FUNCTION +GENERAL +GENERATED (R) +GEOMETRY +GEOMETRYCOLLECTION +GET (R) +GET_FORMAT +GLOBAL +GRANT (R) +GRANTS +GROUP (R) +GROUP_REPLICATION +GTIDS +HANDLER +HASH +HAVING (R) +HELP +HIGH_PRIORITY (R) +HOST +HOSTS +HOUR +HOUR_MICROSECOND (R) +HOUR_MINUTE (R) +HOUR_SECOND (R) +IDENTIFIED +IDENTIFIED WITH (K) +IF (R) +IGNORE (R) +IGNORE_SERVER_IDS +IMPORT +IN (R) +INDEX (R) +INDEXES +INFILE (R) +INITIAL_SIZE +INNER (R) +INOUT (R) +INSENSITIVE (R) +INSERT (R) +INSERT_METHOD +INSTALL +INT (R) +INT1 (R) +INT2 (R) +INT3 (R) +INT4 (R) +INT8 (R) +INTEGER (R) +INTERVAL (R) +INTO (R) +INVOKER +INVISIBLE +IO +IO_AFTER_GTIDS (R) +IO_BEFORE_GTIDS (R) +IO_THREAD +IPC +IS (R) +ISOLATION +ISSUER +ITERATE (R) +JOIN (R) +KEY (R) +KEY_BLOCK_SIZE +KEYS (R) +KILL (R) +LANGUAGE +LAST +LEADING (R) +LEAVE (R) +LEAVES +LEFT (R) +LESS +LEVEL +LIKE (R) +LIMIT (R) +LINEAR (R) +LINES (R) +LINESTRING +LIST +LOAD (R) +LOCAL +LOCALTIME (R) +LOCALTIMESTAMP (R) +LOCK (R) +LOCKS +LOG +LOGFILE +LOGS +LONG (R) +LONGBLOB (R) +LONGTEXT (R) +LOOP (R) +LOW_PRIORITY (R) +MANUAL (R) +MASTER +MASTER_SERVER_ID +MATCH (R) +MAX_CONNECTIONS_PER_HOUR +MAX_QUERIES_PER_HOUR +MAX_ROWS +MAX_SIZE +MAX_STATEMENT_TIME +MAX_UPDATES_PER_HOUR +MAX_USER_CONNECTIONS +MAXVALUE (R) +MEDIUM +MEDIUMBLOB (R) +MEDIUMINT (R) +MEDIUMTEXT (R) +MEMORY +MERGE +MESSAGE_TEXT +MICROSECOND +MIDDLEINT (R) +MIGRATE +MIN_ROWS +MINUTE +MINUTE_MICROSECOND (R) +MINUTE_SECOND (R) +MOD (R) +MODE +MODIFIES (R) +MODIFY +MONTH +MULTILINESTRING +MULTIPOINT +MULTIPOLYGON +MUTEX +MYSQL_ERRNO +NAME +NAMES +NATIONAL +NATURAL (R) +NCHAR +NDB +NDBCLUSTER +NEVER +NEW +NEXT +NO +NO_WAIT +NO_WRITE_TO_BINLOG (R) +NODEGROUP +NONBLOCKING +NONE +NOT (R) +NULL (R) +NUMBER +NUMERIC (R) +NVARCHAR +OFFSET +OLD_PASSWORD +ON (R) +ON COMPLETION NOT PRESERVE +ON COMPLETION PRESERVE +ON SCHEDULE +ONE +ONLY +OPEN +OPTIMIZE (R) +OPTIMIZER_COSTS (R) +OPTION (R) +OPTIONALLY (R) +OPTIONS +OR (R) +ORDER (R) +OUT (R) +OUTER (R) +OUTFILE (R) +OVER (R) +OWNER +PACK_KEYS +PAGE +PARALLEL (R) +PARSE_GCOL_EXPR +PARSE_TREE +PARSER +PARTIAL +PARTITION (R) +PARTITIONING +PARTITIONS +PASSWORD +PERSIST +PERSIST_ONLY +PHASE +PLUGIN +PLUGIN_DIR +PLUGINS +POINT +POLYGON +PORT +PRECEDES +PRECISION (R) +PREPARE +PRESERVE +PREV +PRIMARY (R) +PRIVILEGES +PROCEDURE (R) +PROCESSLIST +PROFILE +PROFILES +PROXY +PURGE (R) +QUALIFY (R) +QUARTER +QUERY +QUICK +RANGE (R) +READ (R) +READ_ONLY +READ_WRITE (R) +READS (R) +REAL (R) +REBUILD +RECOVER +REDO_BUFFER_SIZE +REDOFILE +REDUNDANT +REFERENCES (R) +REGEXP (R) +RELAY +RELAY_LOG_FILE +RELAY_LOG_POS +RELAY_THREAD +RELAYLOG +RELEASE (R) +RELOAD +REMOVE +RENAME (R) +REORGANIZE +REPAIR +REPEAT (R) +REPEATABLE +REPLACE (R) +REPLICATE_DO_DB +REPLICATE_DO_TABLE +REPLICATE_IGNORE_DB +REPLICATE_IGNORE_TABLE +REPLICATE_REWRITE_DB +REPLICATE_WILD_DO_TABLE +REPLICATE_WILD_IGNORE_TABLE +REPLICATION +REQUIRE (R) +RESET +RESIGNAL (R) +RESTORE +RESTRICT (R) +RESUME +RETURN (R) +RETURNED_SQLSTATE +RETURNS +REVERSE +REVOKE (R) +RIGHT (R) +RLIKE (R) +ROLLBACK +ROLLUP +ROUTINE +ROW +ROW_COUNT +ROW_FORMAT +ROWS +RTREE +S3 +SAVEPOINT +SCHEDULE +SCHEMA (R) +SCHEMA_NAME +SCHEMAS (R) +SECOND +SECOND_MICROSECOND (R) +SECURITY +SELECT (R) +SENSITIVE (R) +SEPARATOR (R) +SERIAL +SERIALIZABLE +SERVER +SESSION +SET (R) +SHARE +SHOW (R) +SHUTDOWN +SIGNAL (R) +SIGNED +SIMPLE +SLAVE +SLOW +SMALLINT (R) +SNAPSHOT +SOCKET +SOME +SONAME +SOUNDS +SOURCE +SPATIAL (R) +SPECIFIC (R) +SQL (R) +SQL_AFTER_GTIDS +SQL_AFTER_MTS_GAPS +SQL_BEFORE_GTIDS +SQL_BIG_RESULT (R) +SQL_BUFFER_RESULT +SQL_CACHE +SQL_CALC_FOUND_ROWS (R) +SQL_NO_CACHE +SQL_SMALL_RESULT (R) +SQL_THREAD +SQL_TSI_DAY +SQL_TSI_HOUR +SQL_TSI_MINUTE +SQL_TSI_MONTH +SQL_TSI_QUARTER +SQL_TSI_SECOND +SQL_TSI_WEEK +SQL_TSI_YEAR +SQLEXCEPTION (R) +SQLSTATE (R) +SQLWARNING (R) +SSL (R) +STACKED +START +STARTING (R) +STARTS +STATS_AUTO_RECALC +STATS_PERSISTENT +STATS_SAMPLE_PAGES +STATUS +STOP +STORAGE +STORED (R) +STRAIGHT_JOIN (R) +STRING +SUBCLASS_ORIGIN +SUBJECT +SUBPARTITION +SUBPARTITIONS +SUPER +SUSPEND +SWAPS +SWITCHES +TABLE (R) +TABLE_CHECKSUM +TABLE_NAME +TABLES +TABLESAMPLE (R) +TABLESPACE +TEMPORARY +TEMPTABLE +TERMINATED (R) +TEXT +THAN +THEN (R) +TIME +TIMESTAMP +TIMESTAMPADD +TIMESTAMPDIFF +TINYBLOB (R) +TINYINT (R) +TINYTEXT (R) +TO (R) +TRAILING (R) +TRANSACTION +TRIGGER (R) +TRIGGERS +TRUE (R) +TRUNCATE +TYPE +TYPES +UNCOMMITTED +UNDEFINED +UNDO (R) +UNDO_BUFFER_SIZE +UNDOFILE +UNICODE +UNINSTALL +UNION (R) +UNIQUE (R) +UNKNOWN +UNLOCK (R) +UNSIGNED (R) +UNTIL +UPDATE (R) +UPGRADE +USAGE (R) +USE (R) +USE_FRM +USER +USER_RESOURCES +USING (R) +UTC_DATE (R) +UTC_TIME (R) +UTC_TIMESTAMP (R) +VALIDATION +VALUE +VALUES (R) +VARBINARY (R) +VARCHAR (R) +VARCHARACTER (R) +VARIABLES +VARYING (R) +VECTOR (R) +VIEW +VIRTUAL (R) +WAIT +WARNINGS +WEEK +WEIGHT_STRING +WHEN (R) +WHERE (R) +WHILE (R) +WITH (R) +WITH PARSER +WITHOUT +WORK +WRAPPER +WRITE (R) +X509 +XA +XID +XML +XOR (R) +YEAR +YEAR_MONTH (R) +ZEROFILL (R) diff --git a/tools/contexts/README.md b/tools/contexts/README.md new file mode 100644 index 000000000..21526336b --- /dev/null +++ b/tools/contexts/README.md @@ -0,0 +1,32 @@ +# Context files + +These files are used to generate `src/Contexts/*.php` files. +You need to run `./tools/run_generators.sh` to generate/update them. +The file `src/Tools/ContextGenerator.php` is responsible for building them. +And the generated files are loaded and used by `src/Context.php`. + +## Default contexts + +- For MySQL: MySql50700 +- For MariaDB: MariaDb100300 + +### In tests + +If you name your data files with `_mariadb_` it will automatically load the context for you. +For example: `tests/data/parser/parseSelectOverAlias_mariadb_100600.in`. + +## Files structure + +The file `tools/contexts/_common.txt` contains all the data +that exists in all the MariaDB and MySQL versions currently supported. + +Each `tools/contexts/_functions[MariaDb|MySql].txt` contains the functions supported in this version. + +Each `tools/contexts/[MariaDb|MySql].txt` contains the keywords supported in this version. + +## Data scheme + +- `(R)` -> reserved, can be found on common and version files +- `(D)` -> data type, can be found on `_common.txt` +- `(K)` -> keyword, can be found on common and version files +- `(F)` -> function name, can be found on `_functions[MariaDb|MySql].txt` files diff --git a/tools/contexts/_common.txt b/tools/contexts/_common.txt index bc8968bdd..cdec0b86a 100644 --- a/tools/contexts/_common.txt +++ b/tools/contexts/_common.txt @@ -7,11 +7,15 @@ BIGINT (D) BINARY (D) BINARY VARYING (D) BLOB (D) +BOOL (D) BOOLEAN (D) CHAR (D) CHARACTER (D) CHARACTER SET +CHARACTER VARYING (D) CHARSET +COALESCE PARTITION +CONTAINS SQL CROSS JOIN DATA DIRECTORY DATE (D) @@ -24,7 +28,11 @@ DOUBLE (D) ENCLOSED BY ENUM (D) ESCAPED BY +EXISTS (F) +FIXED (D) FLOAT (D) +FLOAT4 (D) +FLOAT8 (D) FOR EACH ROW FOR UPDATE FOREIGN KEY (K) @@ -44,10 +52,16 @@ INDEX DIRECTORY INDEX KEY (K) INNER JOIN INT (D) +INT1 (D) +INT2 (D) +INT3 (D) +INT4 (D) +INT8 (D) INTEGER (D) INTERVAL (D) JSON (D) KEY (K) +LANGUAGE SQL LOAD DATA LEFT JOIN LEFT OUTER JOIN @@ -56,16 +70,23 @@ LINEAR HASH LINEAR KEY LINESTRING (D) LOCK IN SHARE MODE +LONG VARBINARY (D) +LONG VARCHAR(D) +LONG (D) LONGBLOB (D) LONGTEXT (D) MATCH (F) MEDIUMBLOB (D) MEDIUMINT (D) MEDIUMTEXT (D) +MIDDLEINT (D) +MODIFIES SQL DATA MULTILINESTRING (D) MULTILINEPOINT (D) MULTILINEPOLYGON (D) MULTISET (D) +MULTIPOLYGON (D) +MULTIPOINT (D) NATURAL JOIN NATURAL LEFT JOIN NATURAL LEFT OUTER JOIN @@ -73,6 +94,7 @@ NATURAL RIGHT JOIN NATURAL RIGHT OUTER JOIN NO ACTION NO RELEASE +NO SQL NOT NULL NUMERIC (D) ON DELETE @@ -85,6 +107,7 @@ POLYGON (D) POINT (D) PERSISTENT PRIMARY KEY (K) +READS SQL DATA REAL (D) RIGHT JOIN RIGHT OUTER JOIN @@ -118,5 +141,6 @@ VARBINARY (D) VARCHAR (D) VIRTUAL WITH CONSISTENT SNAPSHOT +WITH ROLLUP XML (D) YEAR (D) diff --git a/tools/contexts/_functionsMariaDb100000.txt b/tools/contexts/_functionsMariaDb100000.txt index f391c8e65..d3999aa28 100644 --- a/tools/contexts/_functionsMariaDb100000.txt +++ b/tools/contexts/_functionsMariaDb100000.txt @@ -17,11 +17,13 @@ AVG (F) BENCHMARK (F) BIN (F) BINARY (F) +BINLOG_GTID_POS (F) BIT_AND (F) BIT_COUNT (F) BIT_LENGTH (F) BIT_OR (F) BIT_XOR (F) +Buffer (F) CAST (F) CEIL (F) CEILING (F) @@ -33,6 +35,14 @@ CHARSET (F) COALESCE (F) COERCIBILITY (F) COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) COMPRESS (F) CONCAT (F) CONCAT_WS (F) @@ -48,11 +58,9 @@ CRC32 (F) Crosses (F) CURDATE (F) CURRENT_DATE (F) -CURRENT_DATE (F) -CURRENT_TIME (F) +CURRENT_ROLE (F) CURRENT_TIME (F) CURRENT_TIMESTAMP (F) -CURRENT_TIMESTAMP (F) CURRENT_USER (F) CURTIME (F) DATABASE (F) @@ -67,6 +75,7 @@ DAYOFMONTH (F) DAYOFWEEK (F) DAYOFYEAR (F) DECODE (F) +DECODE_HISTOGRAM (F) DEFAULT (F) DEGREES (F) DES_DECRYPT (F) @@ -89,6 +98,7 @@ FIND_IN_SET (F) FLOOR (F) FORMAT (F) FOUND_ROWS (F) +FROM_BASE64 (F) FROM_DAYS (F) FROM_UNIXTIME (F) GeomCollFromText (F) @@ -97,6 +107,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -111,6 +122,8 @@ HOUR (F) IF (F) IFNULL (F) IN (F) +INET6_ATON (F) +INET6_NTOA (F) INET_ATON (F) INET_NTOA (F) INSERT (F) @@ -119,12 +132,18 @@ InteriorRingN (F) Intersects (F) INTERVAL (F) IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) IS_USED_LOCK (F) IsClosed (F) IsEmpty (F) ISNULL (F) IsSimple (F) +LAST_DAY (F) LAST_INSERT_ID (F) +LAST_VALUE (F) LCASE (F) LEAST (F) LEFT (F) @@ -132,12 +151,11 @@ LENGTH (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) LOCALTIME (F) -LOCALTIME (F) -LOCALTIMESTAMP (F) LOCALTIMESTAMP (F) LOCATE (F) LOG (F) @@ -149,6 +167,7 @@ LTRIM (F) MAKE_SET (F) MAKEDATE (F) MAKETIME (F) +MASTER_GTID_WAIT (F) MASTER_POS_WAIT (F) MAX (F) MBRContains (F) @@ -213,6 +232,9 @@ QUARTER (F) QUOTE (F) RADIANS (F) RAND (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) RELEASE_LOCK (F) REPEAT (F) REPLACE (F) @@ -236,6 +258,79 @@ SOUNDEX (F) SPACE (F) SQRT (F) SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Contains (F) +ST_Crosses (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineString (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) StartPoint (F) STD (F) STDDEV (F) @@ -259,6 +354,7 @@ TIMEDIFF (F) TIMESTAMP (F) TIMESTAMPADD (F) TIMESTAMPDIFF (F) +TO_BASE64 (F) TO_DAYS (F) TO_SECONDS (F) Touches (F) @@ -285,6 +381,7 @@ VERSION (F) WEEK (F) WEEKDAY (F) WEEKOFYEAR (F) +WEIGHT_STRING (F) Within (F) X (F) Y (F) diff --git a/tools/contexts/_functionsMariaDb100100.txt b/tools/contexts/_functionsMariaDb100100.txt index 3987552d0..bae71393d 100644 --- a/tools/contexts/_functionsMariaDb100100.txt +++ b/tools/contexts/_functionsMariaDb100100.txt @@ -4,7 +4,6 @@ ADDDATE (F) ADDTIME (F) AES_DECRYPT (F) AES_ENCRYPT (F) -ANY_VALUE (F) Area (F) AsBinary (F) ASCII (F) @@ -18,11 +17,13 @@ AVG (F) BENCHMARK (F) BIN (F) BINARY (F) +BINLOG_GTID_POS (F) BIT_AND (F) BIT_COUNT (F) BIT_LENGTH (F) BIT_OR (F) BIT_XOR (F) +BOUNDARY (F) Buffer (F) CAST (F) CEIL (F) @@ -35,6 +36,14 @@ CHARSET (F) COALESCE (F) COERCIBILITY (F) COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) COMPRESS (F) CONCAT (F) CONCAT_WS (F) @@ -51,6 +60,7 @@ CRC32 (F) Crosses (F) CURDATE (F) CURRENT_DATE (F) +CURRENT_ROLE (F) CURRENT_TIME (F) CURRENT_TIMESTAMP (F) CURRENT_USER (F) @@ -67,6 +77,7 @@ DAYOFMONTH (F) DAYOFWEEK (F) DAYOFYEAR (F) DECODE (F) +DECODE_HISTOGRAM (F) DEFAULT (F) DEGREES (F) DES_DECRYPT (F) @@ -99,6 +110,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -133,6 +145,7 @@ IS_USED_LOCK (F) IsClosed (F) IsEmpty (F) ISNULL (F) +IsRing (F) IsSimple (F) JSON_ARRAY (F) JSON_ARRAY_APPEND (F) @@ -159,7 +172,9 @@ JSON_STORAGE_SIZE (F) JSON_TYPE (F) JSON_UNQUOTE (F) JSON_VALID (F) +LAST_DAY (F) LAST_INSERT_ID (F) +LAST_VALUE (F) LCASE (F) LEAST (F) LEFT (F) @@ -167,6 +182,7 @@ LENGTH (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) @@ -182,6 +198,7 @@ LTRIM (F) MAKE_SET (F) MAKEDATE (F) MAKETIME (F) +MASTER_GTID_WAIT (F) MASTER_POS_WAIT (F) MAX (F) MBRContains (F) @@ -237,6 +254,7 @@ Point (F) PointFromText (F) PointFromWKB (F) PointN (F) +PointOnSurface (F) PolyFromText (F) PolyFromWKB (F) Polygon (F) @@ -249,6 +267,9 @@ QUARTER (F) QUOTE (F) RADIANS (F) RAND (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) RANDOM_BYTES (F) RELEASE_ALL_LOCKS (F) RELEASE_LOCK (F) @@ -280,6 +301,7 @@ ST_AsGeoJSON (F) ST_AsText (F) ST_AsWKB (F) ST_AsWKT (F) +ST_Boundary (F) ST_Buffer (F) ST_Buffer_Strategy (F) ST_Centroid (F) @@ -302,6 +324,7 @@ ST_GeomCollFromWKB (F) ST_GeometryCollectionFromText (F) ST_GeometryCollectionFromWKB (F) ST_GeometryFromText (F) +ST_GeometryFromWKB (F) ST_GeometryN (F) ST_GeometryType (F) ST_GeomFromGeoJSON (F) @@ -312,12 +335,14 @@ ST_Intersection (F) ST_Intersects (F) ST_IsClosed (F) ST_IsEmpty (F) +ST_IsRing (F) ST_IsSimple (F) ST_IsValid (F) ST_LatFromGeoHash (F) ST_Length (F) ST_LineFromText (F) ST_LineFromWKB (F) +ST_LineStringFromText (F) ST_LineStringFromWKB (F) ST_LongFromGeoHash (F) ST_MakeEnvelope (F) @@ -341,6 +366,7 @@ ST_PointFromGeoHash (F) ST_PointFromText (F) ST_PointFromWKB (F) ST_PointN (F) +ST_PointOnSurface (F) ST_PolyFromText (F) ST_PolyFromWKB (F) ST_PolygonFromText (F) diff --git a/tools/contexts/_functionsMariaDb100200.txt b/tools/contexts/_functionsMariaDb100200.txt index 3987552d0..99e38c378 100644 --- a/tools/contexts/_functionsMariaDb100200.txt +++ b/tools/contexts/_functionsMariaDb100200.txt @@ -4,7 +4,6 @@ ADDDATE (F) ADDTIME (F) AES_DECRYPT (F) AES_ENCRYPT (F) -ANY_VALUE (F) Area (F) AsBinary (F) ASCII (F) @@ -18,11 +17,13 @@ AVG (F) BENCHMARK (F) BIN (F) BINARY (F) +BINLOG_GTID_POS (F) BIT_AND (F) BIT_COUNT (F) BIT_LENGTH (F) BIT_OR (F) BIT_XOR (F) +BOUNDARY (F) Buffer (F) CAST (F) CEIL (F) @@ -35,6 +36,14 @@ CHARSET (F) COALESCE (F) COERCIBILITY (F) COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) COMPRESS (F) CONCAT (F) CONCAT_WS (F) @@ -49,8 +58,10 @@ COT (F) COUNT (F) CRC32 (F) Crosses (F) +CUME_DIST (F) CURDATE (F) CURRENT_DATE (F) +CURRENT_ROLE (F) CURRENT_TIME (F) CURRENT_TIMESTAMP (F) CURRENT_USER (F) @@ -67,13 +78,14 @@ DAYOFMONTH (F) DAYOFWEEK (F) DAYOFYEAR (F) DECODE (F) +DECODE_HISTOGRAM (F) DEFAULT (F) DEGREES (F) +DENSE_RANK (F) DES_DECRYPT (F) DES_ENCRYPT (F) Dimension (F) Disjoint (F) -Distance (F) ELT (F) ENCODE (F) ENCRYPT (F) @@ -99,6 +111,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -108,8 +121,6 @@ GET_LOCK (F) GLength (F) GREATEST (F) GROUP_CONCAT (F) -GTID_SUBSET (F) -GTID_SUBTRACT (F) HEX (F) HOUR (F) IF (F) @@ -133,40 +144,49 @@ IS_USED_LOCK (F) IsClosed (F) IsEmpty (F) ISNULL (F) +IsRing (F) IsSimple (F) JSON_ARRAY (F) JSON_ARRAY_APPEND (F) JSON_ARRAY_INSERT (F) +JSON_COMPACT (F) JSON_CONTAINS (F) JSON_CONTAINS_PATH (F) JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EXISTS (F) JSON_EXTRACT (F) JSON_INSERT (F) JSON_KEYS (F) JSON_LENGTH (F) +JSON_LOOSE (F) JSON_MERGE (F) JSON_MERGE_PATCH (F) JSON_MERGE_PRESERVE (F) JSON_OBJECT (F) -JSON_PRETTY (F) +JSON_QUERY (F) JSON_QUOTE (F) JSON_REMOVE (F) JSON_REPLACE (F) JSON_SEARCH (F) JSON_SET (F) -JSON_STORAGE_FREE (F) -JSON_STORAGE_SIZE (F) JSON_TYPE (F) JSON_UNQUOTE (F) JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) LAST_INSERT_ID (F) +LAST_VALUE (F) LCASE (F) +LEAD (F) LEAST (F) LEFT (F) LENGTH (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) @@ -182,14 +202,13 @@ LTRIM (F) MAKE_SET (F) MAKEDATE (F) MAKETIME (F) +MASTER_GTID_WAIT (F) MASTER_POS_WAIT (F) +MATCH (F) MAX (F) MBRContains (F) -MBRCoveredBy (F) -MBRCovers (F) MBRDisjoint (F) MBREqual (F) -MBREquals (F) MBRIntersects (F) MBROverlaps (F) MBRTouches (F) @@ -220,6 +239,8 @@ MultiPolygonFromWKB (F) NAME_CONST (F) NOT IN (F) NOW (F) +NTH_VALUE (F) +NTILE (F) NULLIF (F) NumGeometries (F) NumInteriorRings (F) @@ -230,6 +251,7 @@ OLD_PASSWORD (F) ORD (F) Overlaps (F) PASSWORD (F) +PERCENT_RANK (F) PERIOD_ADD (F) PERIOD_DIFF (F) PI (F) @@ -237,6 +259,7 @@ Point (F) PointFromText (F) PointFromWKB (F) PointN (F) +PointOnSurface (F) PolyFromText (F) PolyFromWKB (F) Polygon (F) @@ -249,8 +272,10 @@ QUARTER (F) QUOTE (F) RADIANS (F) RAND (F) -RANDOM_BYTES (F) -RELEASE_ALL_LOCKS (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) RELEASE_LOCK (F) REPEAT (F) REPLACE (F) @@ -258,6 +283,7 @@ REVERSE (F) RIGHT (F) ROUND (F) ROW_COUNT (F) +ROW_NUMBER (F) RPAD (F) RTRIM (F) SCHEMA (F) @@ -276,12 +302,11 @@ SQRT (F) SRID (F) ST_Area (F) ST_AsBinary (F) -ST_AsGeoJSON (F) ST_AsText (F) ST_AsWKB (F) ST_AsWKT (F) +ST_Boundary (F) ST_Buffer (F) -ST_Buffer_Strategy (F) ST_Centroid (F) ST_Contains (F) ST_ConvexHull (F) @@ -290,21 +315,19 @@ ST_Difference (F) ST_Dimension (F) ST_Disjoint (F) ST_Distance (F) -ST_Distance_Sphere (F) ST_EndPoint (F) ST_Envelope (F) ST_Equals (F) ST_ExteriorRing (F) -ST_GeoHash (F) ST_GeomCollFromText (F) ST_GeomCollFromTxt (F) ST_GeomCollFromWKB (F) ST_GeometryCollectionFromText (F) ST_GeometryCollectionFromWKB (F) ST_GeometryFromText (F) +ST_GeometryFromWKB (F) ST_GeometryN (F) ST_GeometryType (F) -ST_GeomFromGeoJSON (F) ST_GeomFromText (F) ST_GeomFromWKB (F) ST_InteriorRingN (F) @@ -312,46 +335,30 @@ ST_Intersection (F) ST_Intersects (F) ST_IsClosed (F) ST_IsEmpty (F) +ST_IsRing (F) ST_IsSimple (F) -ST_IsValid (F) -ST_LatFromGeoHash (F) -ST_Length (F) ST_LineFromText (F) ST_LineFromWKB (F) +ST_LineStringFromText (F) ST_LineStringFromWKB (F) -ST_LongFromGeoHash (F) -ST_MakeEnvelope (F) -ST_MLineFromText (F) -ST_MLineFromWKB (F) -ST_MPointFromText (F) -ST_MPointFromWKB (F) -ST_MPolyFromText (F) -ST_MPolyFromWKB (F) -ST_MultiLineStringFromText (F) -ST_MultiLineStringFromWKB (F) -ST_MultiPointFromText (F) -ST_MultiPointFromWKB (F) -ST_MultiPolygonFromText (F) -ST_MultiPolygonFromWKB (F) ST_NumGeometries (F) +ST_NumInteriorRing (F) ST_NumInteriorRings (F) ST_NumPoints (F) ST_Overlaps (F) -ST_PointFromGeoHash (F) ST_PointFromText (F) ST_PointFromWKB (F) ST_PointN (F) +ST_PointOnSurface (F) ST_PolyFromText (F) ST_PolyFromWKB (F) ST_PolygonFromText (F) ST_PolygonFromWKB (F) -ST_Simplify (F) ST_SRID (F) ST_StartPoint (F) ST_SymDifference (F) ST_Touches (F) ST_Union (F) -ST_Validate (F) ST_Within (F) ST_X (F) ST_Y (F) @@ -397,14 +404,12 @@ UTC_TIME (F) UTC_TIMESTAMP (F) UUID (F) UUID_SHORT (F) -VALIDATE_PASSWORD_STRENGTH (F) VALUES (F) VAR_POP (F) VAR_SAMP (F) VARIANCE (F) VERSION (F) WAIT_FOR_EXECUTED_GTID_SET (F) -WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) WEEK (F) WEEKDAY (F) WEEKOFYEAR (F) diff --git a/tools/contexts/_functionsMariaDb100300.txt b/tools/contexts/_functionsMariaDb100300.txt index 3987552d0..99f66bc77 100644 --- a/tools/contexts/_functionsMariaDb100300.txt +++ b/tools/contexts/_functionsMariaDb100300.txt @@ -4,7 +4,6 @@ ADDDATE (F) ADDTIME (F) AES_DECRYPT (F) AES_ENCRYPT (F) -ANY_VALUE (F) Area (F) AsBinary (F) ASCII (F) @@ -18,11 +17,13 @@ AVG (F) BENCHMARK (F) BIN (F) BINARY (F) +BINLOG_GTID_POS (F) BIT_AND (F) BIT_COUNT (F) BIT_LENGTH (F) BIT_OR (F) BIT_XOR (F) +BOUNDARY (F) Buffer (F) CAST (F) CEIL (F) @@ -32,9 +33,18 @@ CHAR (F) CHAR_LENGTH (F) CHARACTER_LENGTH (F) CHARSET (F) +CHR (F) COALESCE (F) COERCIBILITY (F) COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) COMPRESS (F) CONCAT (F) CONCAT_WS (F) @@ -49,8 +59,10 @@ COT (F) COUNT (F) CRC32 (F) Crosses (F) +CUME_DIST (F) CURDATE (F) CURRENT_DATE (F) +CURRENT_ROLE (F) CURRENT_TIME (F) CURRENT_TIMESTAMP (F) CURRENT_USER (F) @@ -67,19 +79,22 @@ DAYOFMONTH (F) DAYOFWEEK (F) DAYOFYEAR (F) DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) DEFAULT (F) DEGREES (F) +DENSE_RANK (F) DES_DECRYPT (F) DES_ENCRYPT (F) Dimension (F) Disjoint (F) -Distance (F) ELT (F) ENCODE (F) ENCRYPT (F) EndPoint (F) Envelope (F) Equals (F) +EXISTS (F) EXP (F) EXPORT_SET (F) ExteriorRing (F) @@ -99,6 +114,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -108,8 +124,6 @@ GET_LOCK (F) GLength (F) GREATEST (F) GROUP_CONCAT (F) -GTID_SUBSET (F) -GTID_SUBTRACT (F) HEX (F) HOUR (F) IF (F) @@ -133,40 +147,56 @@ IS_USED_LOCK (F) IsClosed (F) IsEmpty (F) ISNULL (F) +IsRing (F) IsSimple (F) +JSON_APPEND (F) JSON_ARRAY (F) +JSON_ARRAYAGG (F) JSON_ARRAY_APPEND (F) JSON_ARRAY_INSERT (F) +JSON_COMPACT (F) JSON_CONTAINS (F) JSON_CONTAINS_PATH (F) JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EXISTS (F) JSON_EXTRACT (F) JSON_INSERT (F) JSON_KEYS (F) JSON_LENGTH (F) +JSON_LOOSE (F) JSON_MERGE (F) JSON_MERGE_PATCH (F) JSON_MERGE_PRESERVE (F) JSON_OBJECT (F) +JSON_OBJECTAGG (F) JSON_PRETTY (F) +JSON_QUERY (F) JSON_QUOTE (F) JSON_REMOVE (F) JSON_REPLACE (F) JSON_SEARCH (F) JSON_SET (F) -JSON_STORAGE_FREE (F) JSON_STORAGE_SIZE (F) JSON_TYPE (F) JSON_UNQUOTE (F) JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) LCASE (F) +LEAD (F) LEAST (F) LEFT (F) LENGTH (F) +LENGTHB (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) @@ -182,10 +212,11 @@ LTRIM (F) MAKE_SET (F) MAKEDATE (F) MAKETIME (F) +MASTER_GTID_WAIT (F) MASTER_POS_WAIT (F) +MATCH (F) MAX (F) MBRContains (F) -MBRCoveredBy (F) MBRCovers (F) MBRDisjoint (F) MBREqual (F) @@ -195,6 +226,7 @@ MBROverlaps (F) MBRTouches (F) MBRWithin (F) MD5 (F) +MEDIAN (F) MICROSECOND (F) MID (F) MIN (F) @@ -218,18 +250,26 @@ MultiPolygon (F) MultiPolygonFromText (F) MultiPolygonFromWKB (F) NAME_CONST (F) +NEXTVAL (F) NOT IN (F) NOW (F) +NTH_VALUE (F) +NTILE (F) NULLIF (F) NumGeometries (F) NumInteriorRings (F) NumPoints (F) +NVL (F) +NVL2 (F) OCT (F) OCTET_LENGTH (F) OLD_PASSWORD (F) ORD (F) Overlaps (F) PASSWORD (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) PERIOD_ADD (F) PERIOD_DIFF (F) PI (F) @@ -237,6 +277,7 @@ Point (F) PointFromText (F) PointFromWKB (F) PointN (F) +PointOnSurface (F) PolyFromText (F) PolyFromWKB (F) Polygon (F) @@ -249,8 +290,10 @@ QUARTER (F) QUOTE (F) RADIANS (F) RAND (F) -RANDOM_BYTES (F) -RELEASE_ALL_LOCKS (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) RELEASE_LOCK (F) REPEAT (F) REPLACE (F) @@ -258,12 +301,14 @@ REVERSE (F) RIGHT (F) ROUND (F) ROW_COUNT (F) +ROW_NUMBER (F) RPAD (F) RTRIM (F) SCHEMA (F) SEC_TO_TIME (F) SECOND (F) SESSION_USER (F) +SETVAL (F) SHA (F) SHA1 (F) SHA2 (F) @@ -280,8 +325,8 @@ ST_AsGeoJSON (F) ST_AsText (F) ST_AsWKB (F) ST_AsWKT (F) +ST_Boundary (F) ST_Buffer (F) -ST_Buffer_Strategy (F) ST_Centroid (F) ST_Contains (F) ST_ConvexHull (F) @@ -295,13 +340,13 @@ ST_EndPoint (F) ST_Envelope (F) ST_Equals (F) ST_ExteriorRing (F) -ST_GeoHash (F) ST_GeomCollFromText (F) ST_GeomCollFromTxt (F) ST_GeomCollFromWKB (F) ST_GeometryCollectionFromText (F) ST_GeometryCollectionFromWKB (F) ST_GeometryFromText (F) +ST_GeometryFromWKB (F) ST_GeometryN (F) ST_GeometryType (F) ST_GeomFromGeoJSON (F) @@ -312,14 +357,13 @@ ST_Intersection (F) ST_Intersects (F) ST_IsClosed (F) ST_IsEmpty (F) +ST_IsRing (F) ST_IsSimple (F) -ST_IsValid (F) -ST_LatFromGeoHash (F) ST_Length (F) ST_LineFromText (F) ST_LineFromWKB (F) +ST_LineStringFromText (F) ST_LineStringFromWKB (F) -ST_LongFromGeoHash (F) ST_MakeEnvelope (F) ST_MLineFromText (F) ST_MLineFromWKB (F) @@ -334,24 +378,23 @@ ST_MultiPointFromWKB (F) ST_MultiPolygonFromText (F) ST_MultiPolygonFromWKB (F) ST_NumGeometries (F) +ST_NumInteriorRing (F) ST_NumInteriorRings (F) ST_NumPoints (F) ST_Overlaps (F) -ST_PointFromGeoHash (F) ST_PointFromText (F) ST_PointFromWKB (F) ST_PointN (F) +ST_PointOnSurface (F) ST_PolyFromText (F) ST_PolyFromWKB (F) ST_PolygonFromText (F) ST_PolygonFromWKB (F) -ST_Simplify (F) ST_SRID (F) ST_StartPoint (F) ST_SymDifference (F) ST_Touches (F) ST_Union (F) -ST_Validate (F) ST_Within (F) ST_X (F) ST_Y (F) @@ -383,6 +426,7 @@ TO_DAYS (F) TO_SECONDS (F) Touches (F) TRIM (F) +TRIM_ORACLE (F) TRUNCATE (F) UCASE (F) UNCOMPRESS (F) @@ -397,14 +441,12 @@ UTC_TIME (F) UTC_TIMESTAMP (F) UUID (F) UUID_SHORT (F) -VALIDATE_PASSWORD_STRENGTH (F) +VALUE (F) VALUES (F) VAR_POP (F) VAR_SAMP (F) VARIANCE (F) VERSION (F) -WAIT_FOR_EXECUTED_GTID_SET (F) -WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) WEEK (F) WEEKDAY (F) WEEKOFYEAR (F) diff --git a/tools/contexts/_functionsMariaDb100400.txt b/tools/contexts/_functionsMariaDb100400.txt new file mode 100644 index 000000000..cf43c1a48 --- /dev/null +++ b/tools/contexts/_functionsMariaDb100400.txt @@ -0,0 +1,495 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_FrechetDistance (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_HausdorffDistance (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID (F) +WSREP_LAST_WRITTEN_GTID (F) +WSREP_SYNC_WAIT_UPTO_GTID (F) +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb100500.txt b/tools/contexts/_functionsMariaDb100500.txt new file mode 100644 index 000000000..5b6420bb6 --- /dev/null +++ b/tools/contexts/_functionsMariaDb100500.txt @@ -0,0 +1,499 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_FrechetDistance (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_HausdorffDistance (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb100600.txt b/tools/contexts/_functionsMariaDb100600.txt new file mode 100644 index 000000000..12de0f1af --- /dev/null +++ b/tools/contexts/_functionsMariaDb100600.txt @@ -0,0 +1,501 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb100700.txt b/tools/contexts/_functionsMariaDb100700.txt new file mode 100644 index 000000000..d5346cc14 --- /dev/null +++ b/tools/contexts/_functionsMariaDb100700.txt @@ -0,0 +1,505 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb100800.txt b/tools/contexts/_functionsMariaDb100800.txt new file mode 100644 index 000000000..eea8ec9d6 --- /dev/null +++ b/tools/contexts/_functionsMariaDb100800.txt @@ -0,0 +1,506 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb100900.txt b/tools/contexts/_functionsMariaDb100900.txt new file mode 100644 index 000000000..e835ad955 --- /dev/null +++ b/tools/contexts/_functionsMariaDb100900.txt @@ -0,0 +1,503 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb101000.txt b/tools/contexts/_functionsMariaDb101000.txt new file mode 100644 index 000000000..9284484d4 --- /dev/null +++ b/tools/contexts/_functionsMariaDb101000.txt @@ -0,0 +1,504 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb101100.txt b/tools/contexts/_functionsMariaDb101100.txt new file mode 100644 index 000000000..94f698426 --- /dev/null +++ b/tools/contexts/_functionsMariaDb101100.txt @@ -0,0 +1,504 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110000.txt b/tools/contexts/_functionsMariaDb110000.txt new file mode 100644 index 000000000..9eca855a0 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110000.txt @@ -0,0 +1,505 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110100.txt b/tools/contexts/_functionsMariaDb110100.txt new file mode 100644 index 000000000..a683d9b59 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110100.txt @@ -0,0 +1,506 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110200.txt b/tools/contexts/_functionsMariaDb110200.txt new file mode 100644 index 000000000..f48350f88 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110200.txt @@ -0,0 +1,509 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAY_INTERSECT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECT_FILTER_KEYS (F) +JSON_OBJECT_TO_ARRAY (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110300.txt b/tools/contexts/_functionsMariaDb110300.txt new file mode 100644 index 000000000..04c062061 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110300.txt @@ -0,0 +1,510 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAY_INTERSECT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECT_FILTER_KEYS (F) +JSON_OBJECT_TO_ARRAY (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +KDF (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110400.txt b/tools/contexts/_functionsMariaDb110400.txt new file mode 100644 index 000000000..04c062061 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110400.txt @@ -0,0 +1,510 @@ +ABS (F) +ACOS (F) +ADD_MONTHS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BINLOG_GTID_POS (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +BOUNDARY (F) +Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +CHR (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COLUMN_ADD (F) +COLUMN_CHECK (F) +COLUMN_CREATE (F) +COLUMN_DELETE (F) +COLUMN_EXISTS (F) +COLUMN_GET (F) +COLUMN_JSON (F) +COLUMN_LIST (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CRC32C (F) +Crosses (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DECODE_HISTOGRAM (F) +DECODE_ORACLE (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXISTS (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsRing (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAY_INTERSECT (F) +JSON_ARRAYAGG (F) +JSON_COMPACT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_DETAILED (F) +JSON_EQUALS (F) +JSON_EXISTS (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_LOOSE (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_NORMALIZE (F) +JSON_OBJECT (F) +JSON_OBJECT_FILTER_KEYS (F) +JSON_OBJECT_TO_ARRAY (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUERY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +KDF (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LASTVAL (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LENGTHB (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromText (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_GTID_WAIT (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEDIAN (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NATURAL_SORT_KEY (F) +NEXTVAL (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +NVL (F) +NVL2 (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PERCENT_RANK (F) +PERCENTILE_CONT (F) +PERCENTILE_DISC (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PointOnSurface (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SETVAL (F) +SFORMAT (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Boundary (F) +ST_Buffer (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsRing (F) +ST_IsSimple (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PointOnSurface (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYS_GUID (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_CHAR (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRIM_ORACLE (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALUE (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +WSREP_LAST_SEEN_GTID +WSREP_LAST_WRITTEN_GTID +WSREP_SYNC_WAIT_UPTO_GTID +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110500.txt b/tools/contexts/_functionsMariaDb110500.txt new file mode 100644 index 000000000..3987552d0 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110500.txt @@ -0,0 +1,416 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +Buffer (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DEFAULT (F) +DEGREES (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +ENCODE (F) +ENCRYPT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +GTID_SUBSET (F) +GTID_SUBTRACT (F) +HEX (F) +HOUR (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +LAST_INSERT_ID (F) +LCASE (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREqual (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PASSWORD (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROUND (F) +ROW_COUNT (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110600.txt b/tools/contexts/_functionsMariaDb110600.txt new file mode 100644 index 000000000..3987552d0 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110600.txt @@ -0,0 +1,416 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +Buffer (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DEFAULT (F) +DEGREES (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +ENCODE (F) +ENCRYPT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +GTID_SUBSET (F) +GTID_SUBTRACT (F) +HEX (F) +HOUR (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +LAST_INSERT_ID (F) +LCASE (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREqual (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PASSWORD (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROUND (F) +ROW_COUNT (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMariaDb110700.txt b/tools/contexts/_functionsMariaDb110700.txt new file mode 100644 index 000000000..b04bb02d5 --- /dev/null +++ b/tools/contexts/_functionsMariaDb110700.txt @@ -0,0 +1,423 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +Buffer (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DEFAULT (F) +DEGREES (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +ENCODE (F) +ENCRYPT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +GTID_SUBSET (F) +GTID_SUBTRACT (F) +HEX (F) +HOUR (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +LAST_INSERT_ID (F) +LCASE (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREqual (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PASSWORD (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROUND (F) +ROW_COUNT (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_DAYS (F) +TO_SECONDS (F) +Touches (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUIDv4 (F) +UUIDv7 (F) +UUID_SHORT (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VEC_DISTANCE_COSINE (F) +VEC_DISTANCE_EUCLIDEAN (F) +VEC_FromText (F) +VEC_ToText (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMySql50000.txt b/tools/contexts/_functionsMySql50000.txt index d66b8c0e2..a8ba45c82 100644 --- a/tools/contexts/_functionsMySql50000.txt +++ b/tools/contexts/_functionsMySql50000.txt @@ -9,8 +9,10 @@ AsBinary (F) ASCII (F) ASIN (F) AsText (F) -ATAN2 (F) +AsWKB (F) +AsWKT (F) ATAN (F) +ATAN2 (F) AVG (F) BENCHMARK (F) BIN (F) @@ -24,21 +26,21 @@ CAST (F) CEIL (F) CEILING (F) Centroid (F) -CHAR_LENGTH (F) CHAR (F) +CHAR_LENGTH (F) CHARACTER_LENGTH (F) CHARSET (F) COALESCE (F) COERCIBILITY (F) COLLATION (F) COMPRESS (F) -CONCAT_WS (F) CONCAT (F) +CONCAT_WS (F) CONNECTION_ID (F) Contains (F) CONV (F) -CONVERT_TZ (F) CONVERT (F) +CONVERT_TZ (F) COS (F) COT (F) COUNT (F) @@ -51,10 +53,10 @@ CURRENT_TIMESTAMP (F) CURRENT_USER (F) CURTIME (F) DATABASE (F) +DATE (F) DATE_ADD (F) DATE_FORMAT (F) DATE_SUB (F) -DATE (F) DATEDIFF (F) DAY (F) DAYNAME (F) @@ -88,6 +90,10 @@ FROM_UNIXTIME (F) GeomCollFromText (F) GeomCollFromWKB (F) GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -115,6 +121,7 @@ IsClosed (F) IsEmpty (F) ISNULL (F) IsSimple (F) +LAST_DAY (F) LAST_INSERT_ID (F) LCASE (F) LEAST (F) @@ -206,6 +213,7 @@ SCHEMA (F) SEC_TO_TIME (F) SECOND (F) SESSION_USER (F) +SHA (F) SHA1 (F) SIGN (F) SIN (F) diff --git a/tools/contexts/_functionsMySql50100.txt b/tools/contexts/_functionsMySql50100.txt index 2b62271fc..58e1e773a 100644 --- a/tools/contexts/_functionsMySql50100.txt +++ b/tools/contexts/_functionsMySql50100.txt @@ -63,7 +63,7 @@ DAYNAME (F) DAYOFMONTH (F) DAYOFWEEK (F) DAYOFYEAR (F) -DECOD (F) +DECODE (F) DEFAULT (F) DEGREES (F) DES_DECRYPT (F) @@ -94,6 +94,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -121,6 +122,7 @@ IsClosed (F) IsEmpty (F) ISNULL (F) IsSimple (F) +LAST_DAY (F) LAST_INSERT_ID (F) LCASE (F) LEAST (F) @@ -129,6 +131,7 @@ LENGTH (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) diff --git a/tools/contexts/_functionsMySql50500.txt b/tools/contexts/_functionsMySql50500.txt index f391c8e65..0eaced5ed 100644 --- a/tools/contexts/_functionsMySql50500.txt +++ b/tools/contexts/_functionsMySql50500.txt @@ -48,11 +48,8 @@ CRC32 (F) Crosses (F) CURDATE (F) CURRENT_DATE (F) -CURRENT_DATE (F) -CURRENT_TIME (F) CURRENT_TIME (F) CURRENT_TIMESTAMP (F) -CURRENT_TIMESTAMP (F) CURRENT_USER (F) CURTIME (F) DATABASE (F) @@ -97,6 +94,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -124,6 +122,7 @@ IsClosed (F) IsEmpty (F) ISNULL (F) IsSimple (F) +LAST_DAY (F) LAST_INSERT_ID (F) LCASE (F) LEAST (F) @@ -132,12 +131,11 @@ LENGTH (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) LOCALTIME (F) -LOCALTIME (F) -LOCALTIMESTAMP (F) LOCALTIMESTAMP (F) LOCATE (F) LOG (F) diff --git a/tools/contexts/_functionsMySql50600.txt b/tools/contexts/_functionsMySql50600.txt index 89f8b5694..ef6f70b10 100644 --- a/tools/contexts/_functionsMySql50600.txt +++ b/tools/contexts/_functionsMySql50600.txt @@ -11,11 +11,6 @@ ASIN (F) AsText (F) AsWKB (F) AsWKT (F) -ASYMMETRIC_DECRYPT (F) -ASYMMETRIC_DERIVE (F) -ASYMMETRIC_ENCRYPT (F) -ASYMMETRIC_SIGN (F) -ASYMMETRIC_VERIFY (F) ATAN (F) ATAN2 (F) AVG (F) @@ -51,10 +46,6 @@ COS (F) COT (F) COUNT (F) CRC32 (F) -CREATE_ASYMMETRIC_PRIV_KEY (F) -CREATE_ASYMMETRIC_PUB_KEY (F) -CREATE_DH_PARAMETERS (F) -CREATE_DIGEST (F) Crosses (F) CURDATE (F) CURRENT_DATE (F) @@ -105,6 +96,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -140,6 +132,7 @@ IsClosed (F) IsEmpty (F) ISNULL (F) IsSimple (F) +LAST_DAY (F) LAST_INSERT_ID (F) LCASE (F) LEAST (F) @@ -148,6 +141,7 @@ LENGTH (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) @@ -164,6 +158,7 @@ MAKE_SET (F) MAKEDATE (F) MAKETIME (F) MASTER_POS_WAIT (F) +MATCH (F) MAX (F) MBRContains (F) MBRDisjoint (F) @@ -275,6 +270,7 @@ ST_GeomCollFromWKB (F) ST_GeometryCollectionFromText (F) ST_GeometryCollectionFromWKB (F) ST_GeometryFromText (F) +ST_GeometryFromWKB (F) ST_GeometryN (F) ST_GeometryType (F) ST_GeomFromText (F) @@ -287,8 +283,10 @@ ST_IsEmpty (F) ST_IsSimple (F) ST_LineFromText (F) ST_LineFromWKB (F) +ST_LineStringFromText (F) ST_LineStringFromWKB (F) ST_NumGeometries (F) +ST_NumInteriorRing (F) ST_NumInteriorRings (F) ST_NumPoints (F) ST_Overlaps (F) @@ -355,6 +353,7 @@ VAR_POP (F) VAR_SAMP (F) VARIANCE (F) VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) WEEK (F) WEEKDAY (F) diff --git a/tools/contexts/_functionsMySql50700.txt b/tools/contexts/_functionsMySql50700.txt index 3987552d0..0ca515529 100644 --- a/tools/contexts/_functionsMySql50700.txt +++ b/tools/contexts/_functionsMySql50700.txt @@ -80,6 +80,7 @@ ENCRYPT (F) EndPoint (F) Envelope (F) Equals (F) +EXISTS (F) EXP (F) EXPORT_SET (F) ExteriorRing (F) @@ -99,6 +100,7 @@ GeometryCollection (F) GeometryCollectionFromText (F) GeometryCollectionFromWKB (F) GeometryFromText (F) +GeometryFromWKB (F) GeometryN (F) GeometryType (F) GeomFromText (F) @@ -134,7 +136,9 @@ IsClosed (F) IsEmpty (F) ISNULL (F) IsSimple (F) +JSON_APPEND (F) JSON_ARRAY (F) +JSON_ARRAYAGG (F) JSON_ARRAY_APPEND (F) JSON_ARRAY_INSERT (F) JSON_CONTAINS (F) @@ -148,17 +152,18 @@ JSON_MERGE (F) JSON_MERGE_PATCH (F) JSON_MERGE_PRESERVE (F) JSON_OBJECT (F) +JSON_OBJECTAGG (F) JSON_PRETTY (F) JSON_QUOTE (F) JSON_REMOVE (F) JSON_REPLACE (F) JSON_SEARCH (F) JSON_SET (F) -JSON_STORAGE_FREE (F) JSON_STORAGE_SIZE (F) JSON_TYPE (F) JSON_UNQUOTE (F) JSON_VALID (F) +LAST_DAY (F) LAST_INSERT_ID (F) LCASE (F) LEAST (F) @@ -167,6 +172,7 @@ LENGTH (F) LineFromText (F) LineFromWKB (F) LineString (F) +LineStringFromText (F) LineStringFromWKB (F) LN (F) LOAD_FILE (F) @@ -183,6 +189,7 @@ MAKE_SET (F) MAKEDATE (F) MAKETIME (F) MASTER_POS_WAIT (F) +MATCH (F) MAX (F) MBRContains (F) MBRCoveredBy (F) @@ -226,7 +233,6 @@ NumInteriorRings (F) NumPoints (F) OCT (F) OCTET_LENGTH (F) -OLD_PASSWORD (F) ORD (F) Overlaps (F) PASSWORD (F) @@ -302,6 +308,7 @@ ST_GeomCollFromWKB (F) ST_GeometryCollectionFromText (F) ST_GeometryCollectionFromWKB (F) ST_GeometryFromText (F) +ST_GeometryFromWKB (F) ST_GeometryN (F) ST_GeometryType (F) ST_GeomFromGeoJSON (F) @@ -318,6 +325,7 @@ ST_LatFromGeoHash (F) ST_Length (F) ST_LineFromText (F) ST_LineFromWKB (F) +ST_LineStringFromText (F) ST_LineStringFromWKB (F) ST_LongFromGeoHash (F) ST_MakeEnvelope (F) @@ -334,6 +342,7 @@ ST_MultiPointFromWKB (F) ST_MultiPolygonFromText (F) ST_MultiPolygonFromWKB (F) ST_NumGeometries (F) +ST_NumInteriorRing (F) ST_NumInteriorRings (F) ST_NumPoints (F) ST_Overlaps (F) diff --git a/tools/contexts/_functionsMySql80000.txt b/tools/contexts/_functionsMySql80000.txt index cf12b5958..0c37a52c2 100644 --- a/tools/contexts/_functionsMySql80000.txt +++ b/tools/contexts/_functionsMySql80000.txt @@ -5,13 +5,13 @@ ADDTIME (F) AES_DECRYPT (F) AES_ENCRYPT (F) ANY_VALUE (F) -Area (F) -AsBinary (F) ASCII (F) ASIN (F) -AsText (F) -AsWKB (F) -AsWKT (F) +asynchronous_connection_failover_add_managed (F) +asynchronous_connection_failover_add_source (F) +asynchronous_connection_failover_delete_managed (F) +asynchronous_connection_failover_delete_source (F) +asynchronous_connection_failover_reset (F) ATAN (F) ATAN2 (F) AVG (F) @@ -24,11 +24,14 @@ BIT_COUNT (F) BIT_LENGTH (F) BIT_OR (F) BIT_XOR (F) -Buffer (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) CAST (F) CEIL (F) CEILING (F) -Centroid (F) CHAR (F) CHAR_LENGTH (F) CHARACTER_LENGTH (F) @@ -40,18 +43,17 @@ COMPRESS (F) CONCAT (F) CONCAT_WS (F) CONNECTION_ID (F) -Contains (F) CONV (F) CONVERT (F) CONVERT_TZ (F) -ConvexHull (F) COS (F) COT (F) COUNT (F) CRC32 (F) -Crosses (F) +CUME_DIST (F) CURDATE (F) CURRENT_DATE (F) +CURRENT_ROLE (F) CURRENT_TIME (F) CURRENT_TIMESTAMP (F) CURRENT_USER (F) @@ -67,52 +69,51 @@ DAYNAME (F) DAYOFMONTH (F) DAYOFWEEK (F) DAYOFYEAR (F) -DECODE (F) DEFAULT (F) DEGREES (F) -DES_DECRYPT (F) -DES_ENCRYPT (F) -Dimension (F) -Disjoint (F) -Distance (F) +DENSE_RANK (F) ELT (F) -ENCODE (F) -ENCRYPT (F) -EndPoint (F) -Envelope (F) -Equals (F) +EXISTS (F) EXP (F) EXPORT_SET (F) -ExteriorRing (F) EXTRACT (F) ExtractValue (F) FIELD (F) FIND_IN_SET (F) +FIRST_VALUE (F) FLOOR (F) FORMAT (F) +FORMAT_BYTES (F) +FORMAT_PICO_TIME (F) FOUND_ROWS (F) FROM_BASE64 (F) FROM_DAYS (F) FROM_UNIXTIME (F) -GeomCollFromText (F) -GeomCollFromWKB (F) +GeomCollection (F) GeometryCollection (F) -GeometryCollectionFromText (F) -GeometryCollectionFromWKB (F) -GeometryFromText (F) -GeometryN (F) -GeometryType (F) -GeomFromText (F) -GeomFromWKB (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) GET_FORMAT (F) GET_LOCK (F) -GLength (F) GREATEST (F) GROUP_CONCAT (F) +GROUPING (F) +group_replication_disable_member_action (F) +group_replication_enable_member_action (F) +group_replication_get_communication_protocol (F) +group_replication_get_write_concurrency (F) +group_replication_reset_member_actions (F) +group_replication_set_as_primary (F) +group_replication_set_communication_protocol (F) +group_replication_set_write_concurrency (F) +group_replication_switch_to_multi_primary_mode (F) +group_replication_switch_to_single_primary_mode (F) GTID_SUBSET (F) GTID_SUBTRACT (F) HEX (F) HOUR (F) +ICU_VERSION (F) IF (F) IFNULL (F) IN (F) @@ -122,8 +123,26 @@ INET_ATON (F) INET_NTOA (F) INSERT (F) INSTR (F) -InteriorRingN (F) -Intersects (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) INTERVAL (F) IS_FREE_LOCK (F) IS_IPV4 (F) @@ -132,11 +151,9 @@ IS_IPV4_MAPPED (F) IS_IPV6 (F) IS_USED_LOCK (F) IS_UUID (F) -IsClosed (F) -IsEmpty (F) ISNULL (F) -IsSimple (F) JSON_ARRAY (F) +JSON_ARRAYAGG (F) JSON_ARRAY_APPEND (F) JSON_ARRAY_INSERT (F) JSON_CONTAINS (F) @@ -150,26 +167,33 @@ JSON_MERGE (F) JSON_MERGE_PATCH (F) JSON_MERGE_PRESERVE (F) JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) JSON_PRETTY (F) JSON_QUOTE (F) JSON_REMOVE (F) JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SCHEMA_VALIDATION_REPORT (F) JSON_SEARCH (F) JSON_SET (F) JSON_STORAGE_FREE (F) JSON_STORAGE_SIZE (F) +JSON_TABLE (F) JSON_TYPE (F) JSON_UNQUOTE (F) JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) LAST_INSERT_ID (F) +LAST_VALUE (F) LCASE (F) +LEAD (F) LEAST (F) LEFT (F) LENGTH (F) -LineFromText (F) -LineFromWKB (F) LineString (F) -LineStringFromWKB (F) LN (F) LOAD_FILE (F) LOCALTIME (F) @@ -185,81 +209,69 @@ MAKE_SET (F) MAKEDATE (F) MAKETIME (F) MASTER_POS_WAIT (F) +MATCH (F) MAX (F) MBRContains (F) MBRCoveredBy (F) MBRCovers (F) MBRDisjoint (F) -MBREqual (F) MBREquals (F) MBRIntersects (F) MBROverlaps (F) MBRTouches (F) MBRWithin (F) MD5 (F) +MEMBER OF (F) MICROSECOND (F) MID (F) MIN (F) MINUTE (F) -MLineFromText (F) -MLineFromWKB (F) MOD (F) MONTH (F) MONTHNAME (F) -MPointFromText (F) -MPointFromWKB (F) -MPolyFromText (F) -MPolyFromWKB (F) MultiLineString (F) -MultiLineStringFromText (F) -MultiLineStringFromWKB (F) MultiPoint (F) -MultiPointFromText (F) -MultiPointFromWKB (F) MultiPolygon (F) -MultiPolygonFromText (F) -MultiPolygonFromWKB (F) NAME_CONST (F) NOT IN (F) NOW (F) +NTH_VALUE (F) +NTILE (F) NULLIF (F) -NumGeometries (F) -NumInteriorRings (F) -NumPoints (F) OCT (F) OCTET_LENGTH (F) -OLD_PASSWORD (F) ORD (F) -Overlaps (F) -PASSWORD (F) +PERCENT_RANK (F) PERIOD_ADD (F) PERIOD_DIFF (F) PI (F) Point (F) -PointFromText (F) -PointFromWKB (F) -PointN (F) -PolyFromText (F) -PolyFromWKB (F) Polygon (F) -PolygonFromText (F) -PolygonFromWKB (F) POSITION (F) POW (F) POWER (F) +PS_CURRENT_THREAD_ID (F) +PS_THREAD_ID (F) QUARTER (F) QUOTE (F) RADIANS (F) RAND (F) RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_LIKE (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) RELEASE_ALL_LOCKS (F) RELEASE_LOCK (F) REPEAT (F) REPLACE (F) REVERSE (F) RIGHT (F) +ROLES_GRAPHML (F) ROUND (F) ROW_COUNT (F) +ROW_NUMBER (F) RPAD (F) RTRIM (F) SCHEMA (F) @@ -273,9 +285,9 @@ SIGN (F) SIN (F) SLEEP (F) SOUNDEX (F) +SOURCE_POS_WAIT (F) SPACE (F) SQRT (F) -SRID (F) ST_Area (F) ST_AsBinary (F) ST_AsGeoJSON (F) @@ -285,6 +297,7 @@ ST_AsWKT (F) ST_Buffer (F) ST_Buffer_Strategy (F) ST_Centroid (F) +ST_Collect (F) ST_Contains (F) ST_ConvexHull (F) ST_Crosses (F) @@ -297,6 +310,7 @@ ST_EndPoint (F) ST_Envelope (F) ST_Equals (F) ST_ExteriorRing (F) +ST_FrechetDistance (F) ST_GeoHash (F) ST_GeomCollFromText (F) ST_GeomCollFromTxt (F) @@ -304,11 +318,13 @@ ST_GeomCollFromWKB (F) ST_GeometryCollectionFromText (F) ST_GeometryCollectionFromWKB (F) ST_GeometryFromText (F) +ST_GeometryFromWKB (F) ST_GeometryN (F) ST_GeometryType (F) ST_GeomFromGeoJSON (F) ST_GeomFromText (F) ST_GeomFromWKB (F) +ST_HausdorffDistance (F) ST_InteriorRingN (F) ST_Intersection (F) ST_Intersects (F) @@ -317,11 +333,16 @@ ST_IsEmpty (F) ST_IsSimple (F) ST_IsValid (F) ST_LatFromGeoHash (F) +ST_Latitude (F) ST_Length (F) ST_LineFromText (F) ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) ST_LineStringFromWKB (F) ST_LongFromGeoHash (F) +ST_Longitude (F) ST_MakeEnvelope (F) ST_MLineFromText (F) ST_MLineFromWKB (F) @@ -336,9 +357,11 @@ ST_MultiPointFromWKB (F) ST_MultiPolygonFromText (F) ST_MultiPolygonFromWKB (F) ST_NumGeometries (F) +ST_NumInteriorRing (F) ST_NumInteriorRings (F) ST_NumPoints (F) ST_Overlaps (F) +ST_PointAtDistance (F) ST_PointFromGeoHash (F) ST_PointFromText (F) ST_PointFromWKB (F) @@ -350,14 +373,17 @@ ST_PolygonFromWKB (F) ST_Simplify (F) ST_SRID (F) ST_StartPoint (F) +ST_SwapXY (F) ST_SymDifference (F) ST_Touches (F) +ST_Transform (F) ST_Union (F) ST_Validate (F) ST_Within (F) ST_X (F) ST_Y (F) -StartPoint (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) STD (F) STDDEV (F) STDDEV_POP (F) @@ -383,7 +409,6 @@ TIMESTAMPDIFF (F) TO_BASE64 (F) TO_DAYS (F) TO_SECONDS (F) -Touches (F) TRIM (F) TRUNCATE (F) UCASE (F) @@ -412,8 +437,5 @@ WEEK (F) WEEKDAY (F) WEEKOFYEAR (F) WEIGHT_STRING (F) -Within (F) -X (F) -Y (F) YEAR (F) YEARWEEK (F) diff --git a/tools/contexts/_functionsMySql80100.txt b/tools/contexts/_functionsMySql80100.txt new file mode 100644 index 000000000..015fb61f3 --- /dev/null +++ b/tools/contexts/_functionsMySql80100.txt @@ -0,0 +1,430 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +ASCII (F) +ASIN (F) +asynchronous_connection_failover_add_managed (F) +asynchronous_connection_failover_add_source (F) +asynchronous_connection_failover_delete_managed (F) +asynchronous_connection_failover_delete_source (F) +asynchronous_connection_failover_reset (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIN_TO_UUID (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +ELT (F) +EXP (F) +EXPORT_SET (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_BYTES (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeometryCollection (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GREATEST (F) +GROUP_CONCAT (F) +GROUPING (F) +group_replication_disable_member_action (F) +group_replication_enable_member_action (F) +group_replication_get_communication_protocol (F) +group_replication_get_write_concurrency (F) +group_replication_reset_member_actions (F) +group_replication_set_as_primary (F) +group_replication_set_communication_protocol (F) +group_replication_set_write_concurrency (F) +group_replication_switch_to_multi_primary_mode (F) +group_replication_switch_to_single_primary_mode (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_USED_LOCK (F) +IS_UUID (F) +ISNULL (F) +JSON_ARRAY (F) +JSON_ARRAYAGG (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SCHEMA_VALIDATION_REPORT (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineString (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEMBER OF (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MultiLineString (F) +MultiPoint (F) +MultiPolygon (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +OCT (F) +OCTET_LENGTH (F) +ORD (F) +PERCENT_RANK (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +Polygon (F) +POSITION (F) +POW (F) +POWER (F) +PS_CURRENT_THREAD_ID (F) +PS_THREAD_ID (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_LIKE (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_FrechetDistance (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_HausdorffDistance (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Latitude (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_Longitude (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_DAYS (F) +TO_SECONDS (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +UUID_TO_BIN (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMySql80200.txt b/tools/contexts/_functionsMySql80200.txt new file mode 100644 index 000000000..76df8c0e7 --- /dev/null +++ b/tools/contexts/_functionsMySql80200.txt @@ -0,0 +1,429 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +ASCII (F) +ASIN (F) +asynchronous_connection_failover_add_managed (F) +asynchronous_connection_failover_add_source (F) +asynchronous_connection_failover_delete_managed (F) +asynchronous_connection_failover_delete_source (F) +asynchronous_connection_failover_reset (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIN_TO_UUID (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +ELT (F) +EXP (F) +EXPORT_SET (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_BYTES (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeometryCollection (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GREATEST (F) +GROUP_CONCAT (F) +GROUPING (F) +group_replication_disable_member_action (F) +group_replication_enable_member_action (F) +group_replication_get_communication_protocol (F) +group_replication_get_write_concurrency (F) +group_replication_reset_member_actions (F) +group_replication_set_as_primary (F) +group_replication_set_communication_protocol (F) +group_replication_set_write_concurrency (F) +group_replication_switch_to_multi_primary_mode (F) +group_replication_switch_to_single_primary_mode (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_USED_LOCK (F) +IS_UUID (F) +ISNULL (F) +JSON_ARRAY (F) +JSON_ARRAYAGG (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SCHEMA_VALIDATION_REPORT (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineString (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEMBER OF (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MultiLineString (F) +MultiPoint (F) +MultiPolygon (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +OCT (F) +OCTET_LENGTH (F) +ORD (F) +PERCENT_RANK (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +Polygon (F) +POSITION (F) +POW (F) +POWER (F) +PS_CURRENT_THREAD_ID (F) +PS_THREAD_ID (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_LIKE (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_FrechetDistance (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_HausdorffDistance (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Latitude (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_Longitude (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_DAYS (F) +TO_SECONDS (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +UUID_TO_BIN (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMySql80300.txt b/tools/contexts/_functionsMySql80300.txt new file mode 100644 index 000000000..76df8c0e7 --- /dev/null +++ b/tools/contexts/_functionsMySql80300.txt @@ -0,0 +1,429 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +ASCII (F) +ASIN (F) +asynchronous_connection_failover_add_managed (F) +asynchronous_connection_failover_add_source (F) +asynchronous_connection_failover_delete_managed (F) +asynchronous_connection_failover_delete_source (F) +asynchronous_connection_failover_reset (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIN_TO_UUID (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +ELT (F) +EXP (F) +EXPORT_SET (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_BYTES (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeometryCollection (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GREATEST (F) +GROUP_CONCAT (F) +GROUPING (F) +group_replication_disable_member_action (F) +group_replication_enable_member_action (F) +group_replication_get_communication_protocol (F) +group_replication_get_write_concurrency (F) +group_replication_reset_member_actions (F) +group_replication_set_as_primary (F) +group_replication_set_communication_protocol (F) +group_replication_set_write_concurrency (F) +group_replication_switch_to_multi_primary_mode (F) +group_replication_switch_to_single_primary_mode (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECKSUM (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_USED_LOCK (F) +IS_UUID (F) +ISNULL (F) +JSON_ARRAY (F) +JSON_ARRAYAGG (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SCHEMA_VALIDATION_REPORT (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineString (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEMBER OF (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MultiLineString (F) +MultiPoint (F) +MultiPolygon (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +OCT (F) +OCTET_LENGTH (F) +ORD (F) +PERCENT_RANK (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +Polygon (F) +POSITION (F) +POW (F) +POWER (F) +PS_CURRENT_THREAD_ID (F) +PS_THREAD_ID (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_LIKE (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_FrechetDistance (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_HausdorffDistance (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Latitude (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_Longitude (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_DAYS (F) +TO_SECONDS (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +UUID_TO_BIN (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMySql80400.txt b/tools/contexts/_functionsMySql80400.txt new file mode 100644 index 000000000..c827e82b4 --- /dev/null +++ b/tools/contexts/_functionsMySql80400.txt @@ -0,0 +1,429 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +ASCII (F) +ASIN (F) +asynchronous_connection_failover_add_managed (F) +asynchronous_connection_failover_add_source (F) +asynchronous_connection_failover_delete_managed (F) +asynchronous_connection_failover_delete_source (F) +asynchronous_connection_failover_reset (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIN_TO_UUID (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +CAN_ACCESS_COLUMN (F) +CAN_ACCESS_DATABASE (F) +CAN_ACCESS_TABLE (F) +CAN_ACCESS_USER (F) +CAN_ACCESS_VIEW (F) +CAST (F) +CEIL (F) +CEILING (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +CUME_DIST (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_ROLE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DEFAULT (F) +DEGREES (F) +DENSE_RANK (F) +ELT (F) +EXP (F) +EXPORT_SET (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FIRST_VALUE (F) +FLOOR (F) +FORMAT (F) +FORMAT_BYTES (F) +FORMAT_PICO_TIME (F) +FOUND_ROWS (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +GeomCollection (F) +GeometryCollection (F) +GET_DD_COLUMN_PRIVILEGES (F) +GET_DD_CREATE_OPTIONS (F) +GET_DD_INDEX_SUB_PART_LENGTH (F) +GET_FORMAT (F) +GET_LOCK (F) +GREATEST (F) +GROUP_CONCAT (F) +GROUPING (F) +group_replication_disable_member_action (F) +group_replication_enable_member_action (F) +group_replication_get_communication_protocol (F) +group_replication_get_write_concurrency (F) +group_replication_reset_member_actions (F) +group_replication_set_as_primary (F) +group_replication_set_communication_protocol (F) +group_replication_set_write_concurrency (F) +group_replication_switch_to_multi_primary_mode (F) +group_replication_switch_to_single_primary_mode (F) +HEX (F) +HOUR (F) +ICU_VERSION (F) +IF (F) +IFNULL (F) +IN (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +INTERNAL_AUTO_INCREMENT (F) +INTERNAL_AVG_ROW_LENGTH (F) +INTERNAL_CHECK_TIME (F) +INTERNAL_CHECKSUM (F) +INTERNAL_DATA_FREE (F) +INTERNAL_DATA_LENGTH (F) +INTERNAL_DD_CHAR_LENGTH (F) +INTERNAL_GET_COMMENT_OR_ERROR (F) +INTERNAL_GET_ENABLED_ROLE_JSON (F) +INTERNAL_GET_HOSTNAME (F) +INTERNAL_GET_USERNAME (F) +INTERNAL_GET_VIEW_WARNING_OR_ERROR (F) +INTERNAL_INDEX_COLUMN_CARDINALITY (F) +INTERNAL_INDEX_LENGTH (F) +INTERNAL_IS_ENABLED_ROLE (F) +INTERNAL_IS_MANDATORY_ROLE (F) +INTERNAL_KEYS_DISABLED (F) +INTERNAL_MAX_DATA_LENGTH (F) +INTERNAL_TABLE_ROWS (F) +INTERNAL_UPDATE_TIME (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_USED_LOCK (F) +IS_UUID (F) +ISNULL (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_ARRAYAGG (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_OBJECTAGG (F) +JSON_OVERLAPS (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SCHEMA_VALID (F) +JSON_SCHEMA_VALIDATION_REPORT (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TABLE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +JSON_VALUE (F) +LAG (F) +LAST_DAY (F) +LAST_INSERT_ID (F) +LAST_VALUE (F) +LCASE (F) +LEAD (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineString (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MATCH (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MEMBER OF (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MultiLineString (F) +MultiPoint (F) +MultiPolygon (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NTH_VALUE (F) +NTILE (F) +NULLIF (F) +OCT (F) +OCTET_LENGTH (F) +ORD (F) +PERCENT_RANK (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +Polygon (F) +POSITION (F) +POW (F) +POWER (F) +PS_CURRENT_THREAD_ID (F) +PS_THREAD_ID (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RANK (F) +REGEXP_INSTR (F) +REGEXP_LIKE (F) +REGEXP_REPLACE (F) +REGEXP_SUBSTR (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROLES_GRAPHML (F) +ROUND (F) +ROW_COUNT (F) +ROW_NUMBER (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SOURCE_POS_WAIT (F) +SPACE (F) +SQRT (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Collect (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_FrechetDistance (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryFromWKB (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_HausdorffDistance (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Latitude (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineInterpolatePoint (F) +ST_LineInterpolatePoints (F) +ST_LineStringFromText (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_Longitude (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRing (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointAtDistance (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SwapXY (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Transform (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +STATEMENT_DIGEST (F) +STATEMENT_DIGEST_TEXT (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_DAYS (F) +TO_SECONDS (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +UUID_TO_BIN (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMySql90000.txt b/tools/contexts/_functionsMySql90000.txt new file mode 100644 index 000000000..cc656237f --- /dev/null +++ b/tools/contexts/_functionsMySql90000.txt @@ -0,0 +1,424 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIN_TO_UUID (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +Buffer (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DEFAULT (F) +DEGREES (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +ENCODE (F) +ENCRYPT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +FROM_VECTOR (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +GTID_SUBSET (F) +GTID_SUBTRACT (F) +HEX (F) +HOUR (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IS_UUID (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +LAST_INSERT_ID (F) +LCASE (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREqual (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PASSWORD (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROUND (F) +ROW_COUNT (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +STRING_TO_VECTOR (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_DAYS (F) +TO_SECONDS (F) +TO_VECTOR (F) +Touches (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +UUID_TO_BIN (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VECTOR_DIM (F) +VECTOR_TO_STRING (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/contexts/_functionsMySql90100.txt b/tools/contexts/_functionsMySql90100.txt new file mode 100644 index 000000000..cc656237f --- /dev/null +++ b/tools/contexts/_functionsMySql90100.txt @@ -0,0 +1,424 @@ +ABS (F) +ACOS (F) +ADDDATE (F) +ADDTIME (F) +AES_DECRYPT (F) +AES_ENCRYPT (F) +ANY_VALUE (F) +Area (F) +AsBinary (F) +ASCII (F) +ASIN (F) +AsText (F) +AsWKB (F) +AsWKT (F) +ATAN (F) +ATAN2 (F) +AVG (F) +BENCHMARK (F) +BIN (F) +BINARY (F) +BIN_TO_UUID (F) +BIT_AND (F) +BIT_COUNT (F) +BIT_LENGTH (F) +BIT_OR (F) +BIT_XOR (F) +Buffer (F) +CAST (F) +CEIL (F) +CEILING (F) +Centroid (F) +CHAR (F) +CHAR_LENGTH (F) +CHARACTER_LENGTH (F) +CHARSET (F) +COALESCE (F) +COERCIBILITY (F) +COLLATION (F) +COMPRESS (F) +CONCAT (F) +CONCAT_WS (F) +CONNECTION_ID (F) +Contains (F) +CONV (F) +CONVERT (F) +CONVERT_TZ (F) +ConvexHull (F) +COS (F) +COT (F) +COUNT (F) +CRC32 (F) +Crosses (F) +CURDATE (F) +CURRENT_DATE (F) +CURRENT_TIME (F) +CURRENT_TIMESTAMP (F) +CURRENT_USER (F) +CURTIME (F) +DATABASE (F) +DATE (F) +DATE_ADD (F) +DATE_FORMAT (F) +DATE_SUB (F) +DATEDIFF (F) +DAY (F) +DAYNAME (F) +DAYOFMONTH (F) +DAYOFWEEK (F) +DAYOFYEAR (F) +DECODE (F) +DEFAULT (F) +DEGREES (F) +DES_DECRYPT (F) +DES_ENCRYPT (F) +Dimension (F) +Disjoint (F) +Distance (F) +ELT (F) +ENCODE (F) +ENCRYPT (F) +EndPoint (F) +Envelope (F) +Equals (F) +EXP (F) +EXPORT_SET (F) +ExteriorRing (F) +EXTRACT (F) +ExtractValue (F) +FIELD (F) +FIND_IN_SET (F) +FLOOR (F) +FORMAT (F) +FOUND_ROWS (F) +FROM_BASE64 (F) +FROM_DAYS (F) +FROM_UNIXTIME (F) +FROM_VECTOR (F) +GeomCollFromText (F) +GeomCollFromWKB (F) +GeometryCollection (F) +GeometryCollectionFromText (F) +GeometryCollectionFromWKB (F) +GeometryFromText (F) +GeometryN (F) +GeometryType (F) +GeomFromText (F) +GeomFromWKB (F) +GET_FORMAT (F) +GET_LOCK (F) +GLength (F) +GREATEST (F) +GROUP_CONCAT (F) +GTID_SUBSET (F) +GTID_SUBTRACT (F) +HEX (F) +HOUR (F) +IF (F) +IFNULL (F) +IN (F) +INET6_ATON (F) +INET6_NTOA (F) +INET_ATON (F) +INET_NTOA (F) +INSERT (F) +INSTR (F) +InteriorRingN (F) +Intersects (F) +INTERVAL (F) +IS_FREE_LOCK (F) +IS_IPV4 (F) +IS_IPV4_COMPAT (F) +IS_IPV4_MAPPED (F) +IS_IPV6 (F) +IS_USED_LOCK (F) +IS_UUID (F) +IsClosed (F) +IsEmpty (F) +ISNULL (F) +IsSimple (F) +JSON_ARRAY (F) +JSON_ARRAY_APPEND (F) +JSON_ARRAY_INSERT (F) +JSON_CONTAINS (F) +JSON_CONTAINS_PATH (F) +JSON_DEPTH (F) +JSON_EXTRACT (F) +JSON_INSERT (F) +JSON_KEYS (F) +JSON_LENGTH (F) +JSON_MERGE (F) +JSON_MERGE_PATCH (F) +JSON_MERGE_PRESERVE (F) +JSON_OBJECT (F) +JSON_PRETTY (F) +JSON_QUOTE (F) +JSON_REMOVE (F) +JSON_REPLACE (F) +JSON_SEARCH (F) +JSON_SET (F) +JSON_STORAGE_FREE (F) +JSON_STORAGE_SIZE (F) +JSON_TYPE (F) +JSON_UNQUOTE (F) +JSON_VALID (F) +LAST_INSERT_ID (F) +LCASE (F) +LEAST (F) +LEFT (F) +LENGTH (F) +LineFromText (F) +LineFromWKB (F) +LineString (F) +LineStringFromWKB (F) +LN (F) +LOAD_FILE (F) +LOCALTIME (F) +LOCALTIMESTAMP (F) +LOCATE (F) +LOG (F) +LOG10 (F) +LOG2 (F) +LOWER (F) +LPAD (F) +LTRIM (F) +MAKE_SET (F) +MAKEDATE (F) +MAKETIME (F) +MASTER_POS_WAIT (F) +MAX (F) +MBRContains (F) +MBRCoveredBy (F) +MBRCovers (F) +MBRDisjoint (F) +MBREqual (F) +MBREquals (F) +MBRIntersects (F) +MBROverlaps (F) +MBRTouches (F) +MBRWithin (F) +MD5 (F) +MICROSECOND (F) +MID (F) +MIN (F) +MINUTE (F) +MLineFromText (F) +MLineFromWKB (F) +MOD (F) +MONTH (F) +MONTHNAME (F) +MPointFromText (F) +MPointFromWKB (F) +MPolyFromText (F) +MPolyFromWKB (F) +MultiLineString (F) +MultiLineStringFromText (F) +MultiLineStringFromWKB (F) +MultiPoint (F) +MultiPointFromText (F) +MultiPointFromWKB (F) +MultiPolygon (F) +MultiPolygonFromText (F) +MultiPolygonFromWKB (F) +NAME_CONST (F) +NOT IN (F) +NOW (F) +NULLIF (F) +NumGeometries (F) +NumInteriorRings (F) +NumPoints (F) +OCT (F) +OCTET_LENGTH (F) +OLD_PASSWORD (F) +ORD (F) +Overlaps (F) +PASSWORD (F) +PERIOD_ADD (F) +PERIOD_DIFF (F) +PI (F) +Point (F) +PointFromText (F) +PointFromWKB (F) +PointN (F) +PolyFromText (F) +PolyFromWKB (F) +Polygon (F) +PolygonFromText (F) +PolygonFromWKB (F) +POSITION (F) +POW (F) +POWER (F) +QUARTER (F) +QUOTE (F) +RADIANS (F) +RAND (F) +RANDOM_BYTES (F) +RELEASE_ALL_LOCKS (F) +RELEASE_LOCK (F) +REPEAT (F) +REPLACE (F) +REVERSE (F) +RIGHT (F) +ROUND (F) +ROW_COUNT (F) +RPAD (F) +RTRIM (F) +SCHEMA (F) +SEC_TO_TIME (F) +SECOND (F) +SESSION_USER (F) +SHA (F) +SHA1 (F) +SHA2 (F) +SIGN (F) +SIN (F) +SLEEP (F) +SOUNDEX (F) +SPACE (F) +SQRT (F) +SRID (F) +ST_Area (F) +ST_AsBinary (F) +ST_AsGeoJSON (F) +ST_AsText (F) +ST_AsWKB (F) +ST_AsWKT (F) +ST_Buffer (F) +ST_Buffer_Strategy (F) +ST_Centroid (F) +ST_Contains (F) +ST_ConvexHull (F) +ST_Crosses (F) +ST_Difference (F) +ST_Dimension (F) +ST_Disjoint (F) +ST_Distance (F) +ST_Distance_Sphere (F) +ST_EndPoint (F) +ST_Envelope (F) +ST_Equals (F) +ST_ExteriorRing (F) +ST_GeoHash (F) +ST_GeomCollFromText (F) +ST_GeomCollFromTxt (F) +ST_GeomCollFromWKB (F) +ST_GeometryCollectionFromText (F) +ST_GeometryCollectionFromWKB (F) +ST_GeometryFromText (F) +ST_GeometryN (F) +ST_GeometryType (F) +ST_GeomFromGeoJSON (F) +ST_GeomFromText (F) +ST_GeomFromWKB (F) +ST_InteriorRingN (F) +ST_Intersection (F) +ST_Intersects (F) +ST_IsClosed (F) +ST_IsEmpty (F) +ST_IsSimple (F) +ST_IsValid (F) +ST_LatFromGeoHash (F) +ST_Length (F) +ST_LineFromText (F) +ST_LineFromWKB (F) +ST_LineStringFromWKB (F) +ST_LongFromGeoHash (F) +ST_MakeEnvelope (F) +ST_MLineFromText (F) +ST_MLineFromWKB (F) +ST_MPointFromText (F) +ST_MPointFromWKB (F) +ST_MPolyFromText (F) +ST_MPolyFromWKB (F) +ST_MultiLineStringFromText (F) +ST_MultiLineStringFromWKB (F) +ST_MultiPointFromText (F) +ST_MultiPointFromWKB (F) +ST_MultiPolygonFromText (F) +ST_MultiPolygonFromWKB (F) +ST_NumGeometries (F) +ST_NumInteriorRings (F) +ST_NumPoints (F) +ST_Overlaps (F) +ST_PointFromGeoHash (F) +ST_PointFromText (F) +ST_PointFromWKB (F) +ST_PointN (F) +ST_PolyFromText (F) +ST_PolyFromWKB (F) +ST_PolygonFromText (F) +ST_PolygonFromWKB (F) +ST_Simplify (F) +ST_SRID (F) +ST_StartPoint (F) +ST_SymDifference (F) +ST_Touches (F) +ST_Union (F) +ST_Validate (F) +ST_Within (F) +ST_X (F) +ST_Y (F) +StartPoint (F) +STD (F) +STDDEV (F) +STDDEV_POP (F) +STDDEV_SAMP (F) +STR_TO_DATE (F) +STRCMP (F) +STRING_TO_VECTOR (F) +SUBDATE (F) +SUBSTR (F) +SUBSTRING (F) +SUBSTRING_INDEX (F) +SUBTIME (F) +SUM (F) +SYSDATE (F) +SYSTEM_USER (F) +TAN (F) +TIME (F) +TIME_FORMAT (F) +TIME_TO_SEC (F) +TIMEDIFF (F) +TIMESTAMP (F) +TIMESTAMPADD (F) +TIMESTAMPDIFF (F) +TO_BASE64 (F) +TO_DAYS (F) +TO_SECONDS (F) +TO_VECTOR (F) +Touches (F) +TRIM (F) +TRUNCATE (F) +UCASE (F) +UNCOMPRESS (F) +UNCOMPRESSED_LENGTH (F) +UNHEX (F) +UNIX_TIMESTAMP (F) +UpdateXML (F) +UPPER (F) +USER (F) +UTC_DATE (F) +UTC_TIME (F) +UTC_TIMESTAMP (F) +UUID (F) +UUID_SHORT (F) +UUID_TO_BIN (F) +VALIDATE_PASSWORD_STRENGTH (F) +VALUES (F) +VAR_POP (F) +VAR_SAMP (F) +VARIANCE (F) +VECTOR_DIM (F) +VECTOR_TO_STRING (F) +VERSION (F) +WAIT_FOR_EXECUTED_GTID_SET (F) +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (F) +WEEK (F) +WEEKDAY (F) +WEEKOFYEAR (F) +WEIGHT_STRING (F) +Within (F) +X (F) +Y (F) +YEAR (F) +YEARWEEK (F) diff --git a/tools/doctum-config.php b/tools/doctum-config.php new file mode 100644 index 000000000..6a2ee4840 --- /dev/null +++ b/tools/doctum-config.php @@ -0,0 +1,24 @@ +files() + ->name('*.php') + ->in($root . 'src'); + +return new Doctum($iterator, [ + 'title' => json_decode(file_get_contents($root . 'composer.json'))->description, + 'build_dir' => $root . 'build/apidocs/', + 'cache_dir' => $root . 'tmp/', + 'version' => 'master', + 'remote_repository' => new GitHubRemoteRepository('phpmyadmin/sql-parser', $root), +]); diff --git a/tools/run_generators.sh b/tools/run_generators.sh index e47deb833..96bb97d66 100755 --- a/tools/run_generators.sh +++ b/tools/run_generators.sh @@ -6,5 +6,12 @@ export LC_ALL=C # Runs the test and context generators. # -php ContextGenerator.php contexts/ ../src/Contexts -php TestGenerator.php ../tests/data ../tests/data +PROJECT_ROOT=$(dirname $(dirname $(readlink -m $0))) + +echo "Using base dir: ${PROJECT_ROOT}" +cd ${PROJECT_ROOT} + +php tools/ContextGenerator.php tools/contexts/ src/Contexts +php tools/TestGenerator.php tests/data tests/data + +echo "Done." diff --git a/tools/sami-config.php b/tools/sami-config.php deleted file mode 100644 index 39db4ed60..000000000 --- a/tools/sami-config.php +++ /dev/null @@ -1,22 +0,0 @@ - -files() - ->name("*.php") - ->in("./src") -; - -return new Sami($iterator, array( - "title" => "A validating SQL lexer and parser with a focus on MySQL dialect.", - "build_dir" => "./doc/", - "cache_dir" => "./tmp" -)); - diff --git a/tools/update-po b/tools/update-po index 4ce9eba7b..98ca5a40c 100755 --- a/tools/update-po +++ b/tools/update-po @@ -19,9 +19,9 @@ xgettext \ --from-code=utf-8 \ --keyword=gettext --keyword=error \ --copyright-holder="phpMyAdmin devel team" \ - `find \( -name '*.php' -o -name '*.phtml' \) -not -path './test/*' -not -path './locale/*' \( -not -path './release/*' -not -path './vendor/*' \) | sort` + `find -name '*.php' -not -path './tests/*' -not -path './locale/*' -not -path './build/*' -not -path './vendor/*' | sort --dictionary-order --ignore-case` -ver=0 +ver=5 sed -i ' s/SOME DESCRIPTIVE TITLE/phpMyAdmin SQL parser translation/;